~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Lalo Martins
  • Date: 2005-09-09 10:58:51 UTC
  • mto: (1185.1.22)
  • mto: This revision was merged to the branch mainline in revision 1390.
  • Revision ID: lalo@exoweb.net-20050909105851-25aa36ea27f4ce7b
creating the new branch constructors

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
from bzrlib.trace import mutter, note, log_error, warning
24
24
from bzrlib.errors import BzrError, BzrCheckError, BzrCommandError
25
25
from bzrlib.branch import find_branch
 
26
from bzrlib.revisionspec import RevisionSpec
26
27
from bzrlib import BZRDIR
27
28
from bzrlib.commands import Command
28
29
 
62
63
    directory is shown.  Otherwise, only the status of the specified
63
64
    files or directories is reported.  If a directory is given, status
64
65
    is reported for everything inside that directory.
 
66
 
 
67
    If a revision is specified, the changes since that revision are shown.
65
68
    """
66
 
    # XXX: FIXME: bzr status should accept a -r option to show changes
67
 
    # relative to a revision, or between revisions
68
 
 
69
69
    takes_args = ['file*']
70
 
    takes_options = ['all', 'show-ids']
 
70
    takes_options = ['all', 'show-ids', 'revision']
71
71
    aliases = ['st', 'stat']
72
72
    
73
73
    def run(self, all=False, show_ids=False, file_list=None):
125
125
        b = find_branch('.')
126
126
 
127
127
        for rev in revs:
128
 
            print '%4d %s' % b.get_revision_info(rev)
 
128
            print '%4d %s' % RevisionSpec(b, rev)
129
129
 
130
130
    
131
131
class cmd_add(Command):
146
146
    Therefore simply saying 'bzr add' will version all files that
147
147
    are currently unknown.
148
148
 
149
 
    Adding a file whose parent directory is not versioned will
150
 
    implicitly add the parent, and so on up to the root. This means
151
 
    you should never need to explictly add a directory, they'll just
152
 
    get added when you add a file in the directory.
 
149
    TODO: Perhaps adding a file whose directly is not versioned should
 
150
    recursively add that parent, rather than giving an error?
153
151
    """
154
152
    takes_args = ['file*']
155
153
    takes_options = ['verbose', 'no-recurse']
201
199
            if len(revision) > 1:
202
200
                raise BzrCommandError('bzr inventory --revision takes'
203
201
                    ' exactly one revision identifier')
204
 
            inv = b.get_revision_inventory(b.lookup_revision(revision[0]))
 
202
            inv = b.get_revision_inventory(RevisionSpec(b, revision[0]).rev_id)
205
203
 
206
204
        for path, entry in inv.entries():
207
205
            if show_ids:
277
275
            if len(names_list) != 2:
278
276
                raise BzrCommandError('to mv multiple files the destination '
279
277
                                      'must be a versioned directory')
280
 
            b.rename_one(rel_names[0], rel_names[1])
281
 
            print "%s => %s" % (rel_names[0], rel_names[1])
 
278
            for pair in b.move(rel_names[0], rel_names[1]):
 
279
                print "%s => %s" % pair
282
280
            
283
281
    
284
282
 
306
304
        import errno
307
305
        
308
306
        br_to = find_branch('.')
309
 
        stored_loc = br_to.get_parent()
 
307
        stored_loc = None
 
308
        try:
 
309
            stored_loc = br_to.controlfile("x-pull", "rb").read().rstrip('\n')
 
310
        except IOError, e:
 
311
            if e.errno != errno.ENOENT:
 
312
                raise
310
313
        if location is None:
311
314
            if stored_loc is None:
312
315
                raise BzrCommandError("No pull location known or specified.")
331
334
                
332
335
            merge(('.', -1), ('.', old_revno), check_clean=False)
333
336
            if location != stored_loc:
334
 
                br_to.set_parent(location)
 
337
                br_to.controlfile("x-pull", "wb").write(location + "\n")
335
338
        finally:
336
339
            rmtree(cache_root)
337
340
 
682
685
            rev1 = None
683
686
            rev2 = None
684
687
        elif len(revision) == 1:
685
 
            rev1 = rev2 = b.get_revision_info(revision[0])[0]
 
688
            rev1 = rev2 = RevisionSpec(b, revision[0]).revno
686
689
        elif len(revision) == 2:
687
 
            rev1 = b.get_revision_info(revision[0])[0]
688
 
            rev2 = b.get_revision_info(revision[1])[0]
 
690
            rev1 = RevisionSpec(b, revision[0]).revno
 
691
            rev2 = RevisionSpec(b, revision[1]).revno
689
692
        else:
690
693
            raise BzrCommandError('bzr log --revision takes one or two values.')
691
694
 
745
748
        if revision == None:
746
749
            tree = b.working_tree()
747
750
        else:
748
 
            tree = b.revision_tree(b.lookup_revision(revision))
 
751
            tree = b.revision_tree(RevisionSpec(b, revision).rev_id)
749
752
 
750
753
        for fp, fc, kind, fid in tree.list_files():
751
754
            if verbose:
858
861
        except ValueError:
859
862
            raise BzrCommandError("not a valid revision-number: %r" % revno)
860
863
 
861
 
        print find_branch('.').lookup_revision(revno)
 
864
        print find_branch('.').get_rev_id(revno)
862
865
 
863
866
 
864
867
class cmd_export(Command):
883
886
        else:
884
887
            if len(revision) != 1:
885
888
                raise BzrError('bzr export --revision takes exactly 1 argument')
886
 
            revno, rev_id = b.get_revision_info(revision[0])
 
889
            rev_id = RevisionSpec(b, revision[0]).rev_id
887
890
        t = b.revision_tree(rev_id)
888
891
        root, ext = os.path.splitext(dest)
889
892
        if not format:
987
990
 
988
991
    This command checks various invariants about the branch storage to
989
992
    detect data corruption or bzr bugs.
 
993
 
 
994
    If given the --update flag, it will update some optional fields
 
995
    to help ensure data consistency.
990
996
    """
991
997
    takes_args = ['dir?']
992
998
 
1178
1184
            other = [branch, -1]
1179
1185
        else:
1180
1186
            if len(revision) == 1:
1181
 
                other = [branch, revision[0]]
1182
1187
                base = [None, None]
 
1188
                other = [branch, RevisionSpec(branch, revision[0]).revno]
1183
1189
            else:
1184
1190
                assert len(revision) == 2
1185
1191
                if None in revision:
1186
1192
                    raise BzrCommandError(
1187
1193
                        "Merge doesn't permit that revision specifier.")
1188
 
                base = [branch, revision[0]]
1189
 
                other = [branch, revision[1]]
 
1194
                base = [branch, RevisionSpec(branch, revision[0]).revno]
 
1195
                other = [branch, RevisionSpec(branch, revision[1]).revno]
1190
1196
 
1191
1197
        try:
1192
1198
            merge(other, base, check_clean=(not force), merge_type=merge_type)
1293
1299
                    print "Using last location: %s" % parent
1294
1300
                remote = parent
1295
1301
        elif parent is None:
1296
 
            # We only update parent if it did not exist, missing should not change the parent
1297
 
            b.set_parent(remote)
 
1302
            # We only update x-pull if it did not exist, missing should not change the parent
 
1303
            b.controlfile('x-pull', 'wb').write(remote + '\n')
1298
1304
        br_remote = find_branch(remote)
1299
1305
 
1300
1306
        return show_missing(b, br_remote, verbose=verbose, quiet=quiet)