~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

merge from aaron - fixes bare excepts, adds ancestor namespace

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