~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Martin Pool
  • Date: 2005-09-13 05:22:41 UTC
  • Revision ID: mbp@sourcefrog.net-20050913052241-52dbd8e8ced620f6
- better BZR_DEBUG trace output

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
    directory is shown.  Otherwise, only the status of the specified
63
63
    files or directories is reported.  If a directory is given, status
64
64
    is reported for everything inside that directory.
 
65
 
 
66
    If a revision is specified, the changes since that revision are shown.
65
67
    """
66
 
    # XXX: FIXME: bzr status should accept a -r option to show changes
67
 
    # relative to a revision, or between revisions
68
 
 
69
68
    takes_args = ['file*']
70
 
    takes_options = ['all', 'show-ids']
 
69
    takes_options = ['all', 'show-ids', 'revision']
71
70
    aliases = ['st', 'stat']
72
71
    
73
72
    def run(self, all=False, show_ids=False, file_list=None):
146
145
    Therefore simply saying 'bzr add' will version all files that
147
146
    are currently unknown.
148
147
 
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.
 
148
    TODO: Perhaps adding a file whose directly is not versioned should
 
149
    recursively add that parent, rather than giving an error?
153
150
    """
154
151
    takes_args = ['file*']
155
152
    takes_options = ['verbose', 'no-recurse']
277
274
            if len(names_list) != 2:
278
275
                raise BzrCommandError('to mv multiple files the destination '
279
276
                                      '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])
 
277
            for pair in b.move(rel_names[0], rel_names[1]):
 
278
                print "%s => %s" % pair
282
279
            
283
280
    
284
281
 
304
301
        import tempfile
305
302
        from shutil import rmtree
306
303
        import errno
 
304
        from bzrlib.branch import pull_loc
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.")
316
319
        cache_root = tempfile.mkdtemp()
317
320
        from bzrlib.branch import DivergedBranches
318
321
        br_from = find_branch(location)
319
 
        location = br_from.base
 
322
        location = pull_loc(br_from)
320
323
        old_revno = br_to.revno()
321
324
        try:
322
325
            from branch import find_cached_branch, DivergedBranches
323
326
            br_from = find_cached_branch(location, cache_root)
324
 
            location = br_from.base
 
327
            location = pull_loc(br_from)
325
328
            old_revno = br_to.revno()
326
329
            try:
327
330
                br_to.update_revisions(br_from)
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
 
481
484
            print patchid
482
485
 
483
486
 
 
487
class cmd_ancestry(Command):
 
488
    """List all revisions merged into this branch."""
 
489
    hidden = True
 
490
    def run(self):
 
491
        b = find_branch('.')
 
492
        for revision_id in b.get_ancestry(b.last_patch()):
 
493
            print revision_id
 
494
 
 
495
 
484
496
class cmd_directories(Command):
485
497
    """Display list of versioned directories in this branch."""
486
498
    def run(self):
533
545
    examples:
534
546
        bzr diff
535
547
        bzr diff -r1
536
 
        bzr diff -r1..2
 
548
        bzr diff -r1:2
537
549
    """
538
550
    
539
551
    takes_args = ['file*']
633
645
    def run(self, filename=None):
634
646
        """Print the branch root."""
635
647
        b = find_branch(filename)
636
 
        print b.base
 
648
        print getattr(b, 'base', None) or getattr(b, 'baseurl')
637
649
 
638
650
 
639
651
class cmd_log(Command):
943
955
    aliases = ['ci', 'checkin']
944
956
 
945
957
    # TODO: Give better message for -s, --summary, used by tla people
 
958
 
 
959
    # XXX: verbose currently does nothing
946
960
    
947
961
    def run(self, message=None, file=None, verbose=True, selected_list=None,
948
962
            unchanged=False):
972
986
            message = codecs.open(file, 'rt', bzrlib.user_encoding).read()
973
987
 
974
988
        try:
975
 
            b.commit(message, verbose=verbose,
 
989
            b.commit(message,
976
990
                     specific_files=selected_list,
977
991
                     allow_pointless=unchanged)
978
992
        except PointlessCommit:
987
1001
 
988
1002
    This command checks various invariants about the branch storage to
989
1003
    detect data corruption or bzr bugs.
 
1004
 
 
1005
    If given the --update flag, it will update some optional fields
 
1006
    to help ensure data consistency.
990
1007
    """
991
1008
    takes_args = ['dir?']
992
1009
 
1293
1310
                    print "Using last location: %s" % parent
1294
1311
                remote = parent
1295
1312
        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)
 
1313
            # We only update x-pull if it did not exist, missing should not change the parent
 
1314
            b.controlfile('x-pull', 'wb').write(remote + '\n')
1298
1315
        br_remote = find_branch(remote)
1299
1316
 
1300
1317
        return show_missing(b, br_remote, verbose=verbose, quiet=quiet)