~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/info.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-02-01 23:48:08 UTC
  • mfrom: (2225.1.6 revert)
  • Revision ID: pqm@pqm.ubuntu.com-20070201234808-3b1302d73474bd8c
Display changes made by revert

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 by Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
19
import time
20
20
 
21
21
 
22
 
import bzrlib.diff as diff
 
22
from bzrlib import (
 
23
    diff,
 
24
    osutils,
 
25
    urlutils,
 
26
    )
23
27
from bzrlib.errors import (NoWorkingTree, NotBranchError,
24
28
                           NoRepositoryPresent, NotLocalUrl)
25
29
from bzrlib.missing import find_unmerged
26
 
import bzrlib.osutils as osutils
27
30
from bzrlib.symbol_versioning import (deprecated_function, 
28
31
        zero_eight)
29
32
 
31
34
def plural(n, base='', pl=None):
32
35
    if n == 1:
33
36
        return base
34
 
    elif pl != None:
 
37
    elif pl is not None:
35
38
        return pl
36
39
    else:
37
40
        return 's'
38
41
 
39
42
 
40
 
def _repo_relpath(repo_path, path):
 
43
def _repo_rel_url(repo_url, inner_url):
41
44
    """Return path with common prefix of repository path removed.
42
45
 
43
46
    If path is not part of the repository, the original path is returned.
44
47
    If path is equal to the repository, the current directory marker '.' is
45
48
    returned.
 
49
    Otherwise, a relative path is returned, with trailing '/' stripped.
46
50
    """
47
 
    path = osutils.normalizepath(path)
48
 
    repo_path = osutils.normalizepath(repo_path)
49
 
    if path == repo_path:
 
51
    inner_url = urlutils.normalize_url(inner_url)
 
52
    repo_url = urlutils.normalize_url(repo_url)
 
53
    if inner_url == repo_url:
50
54
        return '.'
51
 
    if osutils.is_inside(repo_path, path):
52
 
        return osutils.relpath(repo_path, path)
53
 
    return path
 
55
    result = urlutils.relative_url(repo_url, inner_url)
 
56
    if result != inner_url:
 
57
        result = result.rstrip('/')
 
58
    return result
54
59
 
55
60
 
56
61
def _show_location_info(repository, branch=None, working=None):
67
72
                # lightweight checkout of branch in shared repository
68
73
                print '   shared repository: %s' % repository_path
69
74
                print '   repository branch: %s' % (
70
 
                    _repo_relpath(repository_path, branch_path))
 
75
                    _repo_rel_url(repository_path, branch_path))
71
76
            else:
72
77
                # lightweight checkout of standalone branch
73
78
                print '  checkout of branch: %s' % branch_path
75
80
            # branch with tree inside shared repository
76
81
            print '    shared repository: %s' % repository_path
77
82
            print '  repository checkout: %s' % (
78
 
                _repo_relpath(repository_path, branch_path))
 
83
                _repo_rel_url(repository_path, branch_path))
79
84
        elif branch.get_bound_location():
80
85
            # normal checkout
81
86
            print '       checkout root: %s' % working_path
89
94
            # branch is part of shared repository
90
95
            print '  shared repository: %s' % repository_path
91
96
            print '  repository branch: %s' % (
92
 
                _repo_relpath(repository_path, branch_path))
 
97
                _repo_rel_url(repository_path, branch_path))
93
98
        else:
94
99
            # standalone branch
95
100
            print '  branch root: %s' % branch_path
171
176
    branch = working.branch
172
177
    basis = working.basis_tree()
173
178
    work_inv = working.inventory
174
 
    delta = working.changes_from(basis, want_unchanged=True)
175
179
    history = branch.revision_history()
176
 
    tree_last_id = working.last_revision()
 
180
    try:
 
181
        tree_last_id = working.get_parent_ids()[0]
 
182
    except IndexError:
 
183
        tree_last_id = None
177
184
 
178
185
    if len(history) and tree_last_id != history[-1]:
179
186
        tree_last_revno = branch.revision_id_to_revno(tree_last_id)
208
215
 
209
216
    dir_cnt = 0
210
217
    for file_id in work_inv:
211
 
        if work_inv.get_file_kind(file_id) == 'directory':
 
218
        if (work_inv.get_file_kind(file_id) == 'directory' and 
 
219
            not work_inv.is_root(file_id)):
212
220
            dir_cnt += 1
213
221
    print '  %8d versioned %s' \
214
222
          % (dir_cnt,