~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: Robert Collins
  • Date: 2005-09-27 07:24:40 UTC
  • mfrom: (1185.1.41)
  • Revision ID: robertc@robertcollins.net-20050927072440-1bf4d99c3e1db5b3
pair programming worx... merge integration and weave

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import bzrlib.trace
23
23
from bzrlib.trace import mutter, note, log_error, warning
24
24
from bzrlib.errors import BzrError, BzrCheckError, BzrCommandError, NotBranchError
25
 
from bzrlib.branch import find_branch
 
25
from bzrlib.branch import Branch
26
26
from bzrlib import BZRDIR
27
27
from bzrlib.commands import Command
28
28
 
63
63
    files or directories is reported.  If a directory is given, status
64
64
    is reported for everything inside that directory.
65
65
 
66
 
    If a revision is specified, the changes since that revision are shown.
 
66
    If a revision argument is given, the status is calculated against
 
67
    that revision, or between two revisions if two are provided.
67
68
    """
 
69
    # XXX: FIXME: bzr status should accept a -r option to show changes
 
70
    # relative to a revision, or between revisions
 
71
 
68
72
    takes_args = ['file*']
69
73
    takes_options = ['all', 'show-ids', 'revision']
70
74
    aliases = ['st', 'stat']
71
75
    
72
 
    def run(self, all=False, show_ids=False, file_list=None):
 
76
    def run(self, all=False, show_ids=False, file_list=None, revision=None):
73
77
        if file_list:
74
 
            b = find_branch(file_list[0])
 
78
            b = Branch.open_containing(file_list[0])
75
79
            file_list = [b.relpath(x) for x in file_list]
76
80
            # special case: only one path was given and it's the root
77
81
            # of the branch
78
82
            if file_list == ['']:
79
83
                file_list = None
80
84
        else:
81
 
            b = find_branch('.')
 
85
            b = Branch.open_containing('.')
82
86
            
83
87
        from bzrlib.status import show_status
84
88
        show_status(b, show_unchanged=all, show_ids=show_ids,
85
 
                    specific_files=file_list)
 
89
                    specific_files=file_list, revision=revision)
86
90
 
87
91
 
88
92
class cmd_cat_revision(Command):
89
 
    """Write out metadata for a revision."""
 
93
    """Write out metadata for a revision.
 
94
    
 
95
    The revision to print can either be specified by a specific
 
96
    revision identifier, or you can use --revision.
 
97
    """
90
98
 
91
99
    hidden = True
92
 
    takes_args = ['revision_id']
 
100
    takes_args = ['revision_id?']
 
101
    takes_options = ['revision']
93
102
    
94
 
    def run(self, revision_id):
95
 
        b = find_branch('.')
96
 
        sys.stdout.write(b.get_revision_xml_file(revision_id).read())
 
103
    def run(self, revision_id=None, revision=None):
 
104
        from bzrlib.revisionspec import RevisionSpec
97
105
 
 
106
        if revision_id is not None and revision is not None:
 
107
            raise BzrCommandError('You can only supply one of revision_id or --revision')
 
108
        if revision_id is None and revision is None:
 
109
            raise BzrCommandError('You must supply either --revision or a revision_id')
 
110
        b = Branch.open_containing('.')
 
111
        if revision_id is not None:
 
112
            sys.stdout.write(b.get_revision_xml_file(revision_id).read())
 
113
        elif revision is not None:
 
114
            for rev in revision:
 
115
                if rev is None:
 
116
                    raise BzrCommandError('You cannot specify a NULL revision.')
 
117
                revno, rev_id = rev.in_history(b)
 
118
                sys.stdout.write(b.get_revision_xml_file(rev_id).read())
 
119
    
98
120
 
99
121
class cmd_revno(Command):
100
122
    """Show current revision number.
101
123
 
102
124
    This is equal to the number of revisions on this branch."""
103
125
    def run(self):
104
 
        print find_branch('.').revno()
 
126
        print Branch.open_containing('.').revno()
105
127
 
106
128
 
107
129
class cmd_revision_info(Command):
110
132
    hidden = True
111
133
    takes_args = ['revision_info*']
112
134
    takes_options = ['revision']
113
 
    def run(self, revision=None, revision_info_list=None):
114
 
        from bzrlib.branch import find_branch
 
135
    def run(self, revision=None, revision_info_list=[]):
 
136
        from bzrlib.revisionspec import RevisionSpec
115
137
 
116
138
        revs = []
117
139
        if revision is not None:
118
140
            revs.extend(revision)
119
141
        if revision_info_list is not None:
120
 
            revs.extend(revision_info_list)
 
142
            for rev in revision_info_list:
 
143
                revs.append(RevisionSpec(rev))
121
144
        if len(revs) == 0:
122
145
            raise BzrCommandError('You must supply a revision identifier')
123
146
 
124
 
        b = find_branch('.')
 
147
        b = Branch.open_containing('.')
125
148
 
126
149
        for rev in revs:
127
 
            print '%4d %s' % b.get_revision_info(rev)
 
150
            revinfo = rev.in_history(b)
 
151
            if revinfo.revno is None:
 
152
                print '     %s' % revinfo.rev_id
 
153
            else:
 
154
                print '%4d %s' % (revinfo.revno, revinfo.rev_id)
128
155
 
129
156
    
130
157
class cmd_add(Command):
145
172
    Therefore simply saying 'bzr add' will version all files that
146
173
    are currently unknown.
147
174
 
148
 
    TODO: Perhaps adding a file whose directly is not versioned should
149
 
    recursively add that parent, rather than giving an error?
 
175
    Adding a file whose parent directory is not versioned will
 
176
    implicitly add the parent, and so on up to the root. This means
 
177
    you should never need to explictly add a directory, they'll just
 
178
    get added when you add a file in the directory.
150
179
    """
151
180
    takes_args = ['file*']
152
181
    takes_options = ['verbose', 'no-recurse']
171
200
        for d in dir_list:
172
201
            os.mkdir(d)
173
202
            if not b:
174
 
                b = find_branch(d)
 
203
                b = Branch.open_containing(d)
175
204
            b.add([d])
176
205
            print 'added', d
177
206
 
182
211
    hidden = True
183
212
    
184
213
    def run(self, filename):
185
 
        print find_branch(filename).relpath(filename)
 
214
        print Branch.open_containing(filename).relpath(filename)
186
215
 
187
216
 
188
217
 
191
220
    takes_options = ['revision', 'show-ids']
192
221
    
193
222
    def run(self, revision=None, show_ids=False):
194
 
        b = find_branch('.')
195
 
        if revision == None:
 
223
        b = Branch.open_containing('.')
 
224
        if revision is None:
196
225
            inv = b.read_working_inventory()
197
226
        else:
198
227
            if len(revision) > 1:
199
228
                raise BzrCommandError('bzr inventory --revision takes'
200
229
                    ' exactly one revision identifier')
201
 
            inv = b.get_revision_inventory(b.lookup_revision(revision[0]))
 
230
            inv = b.get_revision_inventory(revision[0].in_history(b).rev_id)
202
231
 
203
232
        for path, entry in inv.entries():
204
233
            if show_ids:
217
246
    """
218
247
    takes_args = ['source$', 'dest']
219
248
    def run(self, source_list, dest):
220
 
        b = find_branch('.')
 
249
        b = Branch.open_containing('.')
221
250
 
222
251
        # TODO: glob expansion on windows?
223
252
        b.move([b.relpath(s) for s in source_list], b.relpath(dest))
240
269
    takes_args = ['from_name', 'to_name']
241
270
    
242
271
    def run(self, from_name, to_name):
243
 
        b = find_branch('.')
 
272
        b = Branch.open_containing('.')
244
273
        b.rename_one(b.relpath(from_name), b.relpath(to_name))
245
274
 
246
275
 
262
291
    def run(self, names_list):
263
292
        if len(names_list) < 2:
264
293
            raise BzrCommandError("missing file argument")
265
 
        b = find_branch(names_list[0])
 
294
        b = Branch.open_containing(names_list[0])
266
295
 
267
296
        rel_names = [b.relpath(x) for x in names_list]
268
297
        
274
303
            if len(names_list) != 2:
275
304
                raise BzrCommandError('to mv multiple files the destination '
276
305
                                      'must be a versioned directory')
277
 
            for pair in b.move(rel_names[0], rel_names[1]):
278
 
                print "%s => %s" % pair
 
306
            b.rename_one(rel_names[0], rel_names[1])
 
307
            print "%s => %s" % (rel_names[0], rel_names[1])
279
308
            
280
309
    
281
310
 
301
330
        import tempfile
302
331
        from shutil import rmtree
303
332
        import errno
304
 
        from bzrlib.branch import pull_loc
305
333
        
306
 
        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
 
334
        br_to = Branch.open_containing('.')
 
335
        stored_loc = br_to.get_parent()
313
336
        if location is None:
314
337
            if stored_loc is None:
315
338
                raise BzrCommandError("No pull location known or specified.")
317
340
                print "Using last location: %s" % stored_loc
318
341
                location = stored_loc
319
342
        cache_root = tempfile.mkdtemp()
320
 
        from bzrlib.branch import DivergedBranches
321
 
        br_from = find_branch(location)
322
 
        location = pull_loc(br_from)
 
343
        from bzrlib.errors import DivergedBranches
 
344
        br_from = Branch.open_containing(location)
 
345
        location = br_from.base
323
346
        old_revno = br_to.revno()
324
347
        try:
325
 
            from branch import find_cached_branch, DivergedBranches
326
 
            br_from = find_cached_branch(location, cache_root)
327
 
            location = pull_loc(br_from)
 
348
            from bzrlib.errors import DivergedBranches
 
349
            br_from = Branch.open(location)
 
350
            br_from.setup_caching(cache_root)
 
351
            location = br_from.base
328
352
            old_revno = br_to.revno()
329
353
            try:
330
354
                br_to.update_revisions(br_from)
334
358
                
335
359
            merge(('.', -1), ('.', old_revno), check_clean=False)
336
360
            if location != stored_loc:
337
 
                br_to.controlfile("x-pull", "wb").write(location + "\n")
 
361
                br_to.set_parent(location)
338
362
        finally:
339
363
            rmtree(cache_root)
340
364
 
354
378
    aliases = ['get', 'clone']
355
379
 
356
380
    def run(self, from_location, to_location=None, revision=None):
357
 
        from bzrlib.branch import copy_branch, find_cached_branch
 
381
        from bzrlib.branch import copy_branch
358
382
        import tempfile
359
383
        import errno
360
384
        from shutil import rmtree
366
390
                raise BzrCommandError(
367
391
                    'bzr branch --revision takes exactly 1 revision value')
368
392
            try:
369
 
                br_from = find_cached_branch(from_location, cache_root)
 
393
                br_from = Branch.open(from_location)
370
394
            except OSError, e:
371
395
                if e.errno == errno.ENOENT:
372
396
                    raise BzrCommandError('Source location "%s" does not'
373
397
                                          ' exist.' % to_location)
374
398
                else:
375
399
                    raise
 
400
            br_from.setup_caching(cache_root)
 
401
            if len(revision) == 1 and revision[0] is not None:
 
402
                revision_id = revision[0].in_history(br_from)[1]
 
403
            else:
 
404
                revision_id = None
376
405
            if to_location is None:
377
406
                to_location = os.path.basename(from_location.rstrip("/\\"))
378
407
            try:
387
416
                else:
388
417
                    raise
389
418
            try:
390
 
                copy_branch(br_from, to_location, revision[0])
 
419
                copy_branch(br_from, to_location, revision_id)
391
420
            except bzrlib.errors.NoSuchRevision:
392
421
                rmtree(to_location)
393
422
                msg = "The branch %s has no revision %d." % (from_location, revision[0])
406
435
    takes_args = ['dir?']
407
436
 
408
437
    def run(self, dir='.'):
409
 
        b = find_branch(dir)
 
438
        b = Branch.open_containing(dir)
410
439
        old_inv = b.basis_tree().inventory
411
440
        new_inv = b.read_working_inventory()
412
441
 
423
452
    def run(self, branch=None):
424
453
        import info
425
454
 
426
 
        b = find_branch(branch)
 
455
        b = Branch.open_containing(branch)
427
456
        info.show_info(b)
428
457
 
429
458
 
437
466
    takes_options = ['verbose']
438
467
    
439
468
    def run(self, file_list, verbose=False):
440
 
        b = find_branch(file_list[0])
 
469
        b = Branch.open_containing(file_list[0])
441
470
        b.remove([b.relpath(f) for f in file_list], verbose=verbose)
442
471
 
443
472
 
451
480
    hidden = True
452
481
    takes_args = ['filename']
453
482
    def run(self, filename):
454
 
        b = find_branch(filename)
 
483
        b = Branch.open_containing(filename)
455
484
        i = b.inventory.path2id(b.relpath(filename))
456
485
        if i == None:
457
486
            raise BzrError("%r is not a versioned file" % filename)
467
496
    hidden = True
468
497
    takes_args = ['filename']
469
498
    def run(self, filename):
470
 
        b = find_branch(filename)
 
499
        b = Branch.open_containing(filename)
471
500
        inv = b.inventory
472
501
        fid = inv.path2id(b.relpath(filename))
473
502
        if fid == None:
480
509
    """Display list of revision ids on this branch."""
481
510
    hidden = True
482
511
    def run(self):
483
 
        for patchid in find_branch('.').revision_history():
 
512
        for patchid in Branch.open_containing('.').revision_history():
484
513
            print patchid
485
514
 
486
515
 
496
525
class cmd_directories(Command):
497
526
    """Display list of versioned directories in this branch."""
498
527
    def run(self):
499
 
        for name, ie in find_branch('.').read_working_inventory().directories():
 
528
        for name, ie in Branch.open_containing('.').read_working_inventory().directories():
500
529
            if name == '':
501
530
                print '.'
502
531
            else:
518
547
    """
519
548
    def run(self):
520
549
        from bzrlib.branch import Branch
521
 
        Branch('.', init=True)
 
550
        Branch.initialize('.')
522
551
 
523
552
 
524
553
class cmd_diff(Command):
545
574
    examples:
546
575
        bzr diff
547
576
        bzr diff -r1
548
 
        bzr diff -r1:2
 
577
        bzr diff -r1..2
549
578
    """
550
579
    
551
580
    takes_args = ['file*']
556
585
        from bzrlib.diff import show_diff
557
586
 
558
587
        if file_list:
559
 
            b = find_branch(file_list[0])
 
588
            b = Branch.open_containing(file_list[0])
560
589
            file_list = [b.relpath(f) for f in file_list]
561
590
            if file_list == ['']:
562
591
                # just pointing to top-of-tree
563
592
                file_list = None
564
593
        else:
565
 
            b = find_branch('.')
 
594
            b = Branch.open_containing('.')
566
595
 
567
596
        if revision is not None:
568
597
            if len(revision) == 1:
587
616
    TODO: Show files deleted since a previous revision, or between two revisions.
588
617
    """
589
618
    def run(self, show_ids=False):
590
 
        b = find_branch('.')
 
619
        b = Branch.open_containing('.')
591
620
        old = b.basis_tree()
592
621
        new = b.working_tree()
593
622
 
610
639
    def run(self):
611
640
        from bzrlib.delta import compare_trees
612
641
 
613
 
        b = find_branch('.')
 
642
        b = Branch.open_containing('.')
614
643
        td = compare_trees(b.basis_tree(), b.working_tree())
615
644
 
616
645
        for path, id, kind in td.modified:
622
651
    """List files added in working tree."""
623
652
    hidden = True
624
653
    def run(self):
625
 
        b = find_branch('.')
 
654
        b = Branch.open_containing('.')
626
655
        wt = b.working_tree()
627
656
        basis_inv = b.basis_tree().inventory
628
657
        inv = wt.inventory
644
673
    takes_args = ['filename?']
645
674
    def run(self, filename=None):
646
675
        """Print the branch root."""
647
 
        b = find_branch(filename)
648
 
        print getattr(b, 'base', None) or getattr(b, 'baseurl')
 
676
        b = Branch.open_containing(filename)
 
677
        print b.base
649
678
 
650
679
 
651
680
class cmd_log(Command):
680
709
        direction = (forward and 'forward') or 'reverse'
681
710
        
682
711
        if filename:
683
 
            b = find_branch(filename)
 
712
            b = Branch.open_containing(filename)
684
713
            fp = b.relpath(filename)
685
714
            if fp:
686
715
                file_id = b.read_working_inventory().path2id(fp)
687
716
            else:
688
717
                file_id = None  # points to branch root
689
718
        else:
690
 
            b = find_branch('.')
 
719
            b = Branch.open_containing('.')
691
720
            file_id = None
692
721
 
693
722
        if revision is None:
694
723
            rev1 = None
695
724
            rev2 = None
696
725
        elif len(revision) == 1:
697
 
            rev1 = rev2 = b.get_revision_info(revision[0])[0]
 
726
            rev1 = rev2 = revision[0].in_history(b).revno
698
727
        elif len(revision) == 2:
699
 
            rev1 = b.get_revision_info(revision[0])[0]
700
 
            rev2 = b.get_revision_info(revision[1])[0]
 
728
            rev1 = revision[0].in_history(b).revno
 
729
            rev2 = revision[1].in_history(b).revno
701
730
        else:
702
731
            raise BzrCommandError('bzr log --revision takes one or two values.')
703
732
 
739
768
    hidden = True
740
769
    takes_args = ["filename"]
741
770
    def run(self, filename):
742
 
        b = find_branch(filename)
 
771
        b = Branch.open_containing(filename)
743
772
        inv = b.read_working_inventory()
744
773
        file_id = inv.path2id(b.relpath(filename))
745
774
        for revno, revision_id, what in bzrlib.log.find_touching_revisions(b, file_id):
753
782
    """
754
783
    hidden = True
755
784
    def run(self, revision=None, verbose=False):
756
 
        b = find_branch('.')
 
785
        b = Branch.open_containing('.')
757
786
        if revision == None:
758
787
            tree = b.working_tree()
759
788
        else:
760
 
            tree = b.revision_tree(b.lookup_revision(revision))
 
789
            tree = b.revision_tree(revision.in_history(b).rev_id)
761
790
 
762
791
        for fp, fc, kind, fid in tree.list_files():
763
792
            if verbose:
778
807
    """List unknown files."""
779
808
    def run(self):
780
809
        from bzrlib.osutils import quotefn
781
 
        for f in find_branch('.').unknowns():
 
810
        for f in Branch.open_containing('.').unknowns():
782
811
            print quotefn(f)
783
812
 
784
813
 
806
835
        from bzrlib.atomicfile import AtomicFile
807
836
        import os.path
808
837
 
809
 
        b = find_branch('.')
 
838
        b = Branch.open_containing('.')
810
839
        ifn = b.abspath('.bzrignore')
811
840
 
812
841
        if os.path.exists(ifn):
846
875
 
847
876
    See also: bzr ignore"""
848
877
    def run(self):
849
 
        tree = find_branch('.').working_tree()
 
878
        tree = Branch.open_containing('.').working_tree()
850
879
        for path, file_class, kind, file_id in tree.list_files():
851
880
            if file_class != 'I':
852
881
                continue
870
899
        except ValueError:
871
900
            raise BzrCommandError("not a valid revision-number: %r" % revno)
872
901
 
873
 
        print find_branch('.').lookup_revision(revno)
 
902
        print Branch.open_containing('.').get_rev_id(revno)
874
903
 
875
904
 
876
905
class cmd_export(Command):
889
918
    takes_options = ['revision', 'format', 'root']
890
919
    def run(self, dest, revision=None, format=None, root=None):
891
920
        import os.path
892
 
        b = find_branch('.')
 
921
        b = Branch.open_containing('.')
893
922
        if revision is None:
894
923
            rev_id = b.last_revision()
895
924
        else:
896
925
            if len(revision) != 1:
897
926
                raise BzrError('bzr export --revision takes exactly 1 argument')
898
 
            revno, rev_id = b.get_revision_info(revision[0])
 
927
            rev_id = revision[0].in_history(b).rev_id
899
928
        t = b.revision_tree(rev_id)
900
929
        root, ext = os.path.splitext(dest)
901
930
        if not format:
917
946
    takes_args = ['filename']
918
947
 
919
948
    def run(self, filename, revision=None):
920
 
        if revision == None:
 
949
        if revision is None:
921
950
            raise BzrCommandError("bzr cat requires a revision number")
922
951
        elif len(revision) != 1:
923
952
            raise BzrCommandError("bzr cat --revision takes exactly one number")
924
 
        b = find_branch('.')
925
 
        b.print_file(b.relpath(filename), revision[0])
 
953
        b = Branch.open_containing('.')
 
954
        b.print_file(b.relpath(filename), revision[0].in_history(b).revno)
926
955
 
927
956
 
928
957
class cmd_local_time_offset(Command):
965
994
        from bzrlib.status import show_status
966
995
        from cStringIO import StringIO
967
996
 
968
 
        b = find_branch('.')
 
997
        b = Branch.open_containing('.')
969
998
        if selected_list:
970
999
            selected_list = [b.relpath(s) for s in selected_list]
971
1000
            
1001
1030
 
1002
1031
    This command checks various invariants about the branch storage to
1003
1032
    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
1033
    """
1008
1034
    takes_args = ['dir?']
1009
1035
 
1010
1036
    def run(self, dir='.'):
1011
1037
        from bzrlib.check import check
1012
1038
 
1013
 
        check(find_branch(dir))
 
1039
        check(Branch.open_containing(dir))
1014
1040
 
1015
1041
 
1016
1042
class cmd_scan_cache(Command):
1049
1075
        upgrade(dir)
1050
1076
 
1051
1077
 
1052
 
 
1053
1078
class cmd_whoami(Command):
1054
1079
    """Show bzr user id."""
1055
1080
    takes_options = ['email']
1056
1081
    
1057
1082
    def run(self, email=False):
1058
1083
        try:
1059
 
            b = bzrlib.branch.find_branch('.')
 
1084
            b = bzrlib.branch.Branch.open_containing('.')
1060
1085
        except NotBranchError:
1061
1086
            b = None
1062
1087
        
1128
1153
    def run(self, branch, other):
1129
1154
        from bzrlib.revision import common_ancestor, MultipleRevisionSources
1130
1155
        
1131
 
        branch1 = find_branch(branch)
1132
 
        branch2 = find_branch(other)
 
1156
        branch1 = Branch.open_containing(branch)
 
1157
        branch2 = Branch.open_containing(other)
1133
1158
 
1134
1159
        history_1 = branch1.revision_history()
1135
1160
        history_2 = branch2.revision_history()
1198
1223
            other = [branch, -1]
1199
1224
        else:
1200
1225
            if len(revision) == 1:
1201
 
                other = [branch, revision[0]]
1202
1226
                base = [None, None]
 
1227
                other = [branch, revision[0].in_history(branch).revno]
1203
1228
            else:
1204
1229
                assert len(revision) == 2
1205
1230
                if None in revision:
1206
1231
                    raise BzrCommandError(
1207
1232
                        "Merge doesn't permit that revision specifier.")
1208
 
                base = [branch, revision[0]]
1209
 
                other = [branch, revision[1]]
 
1233
                from bzrlib.branch import Branch
 
1234
                b = Branch.open(branch)
 
1235
 
 
1236
                base = [branch, revision[0].in_history(b).revno]
 
1237
                other = [branch, revision[1].in_history(b).revno]
1210
1238
 
1211
1239
        try:
1212
1240
            merge(other, base, check_clean=(not force), merge_type=merge_type)
1240
1268
            if len(file_list) == 0:
1241
1269
                raise BzrCommandError("No files specified")
1242
1270
        if revision is None:
1243
 
            revision = [-1]
 
1271
            revno = -1
1244
1272
        elif len(revision) != 1:
1245
1273
            raise BzrCommandError('bzr revert --revision takes exactly 1 argument')
1246
 
        merge(('.', revision[0]), parse_spec('.'),
 
1274
        else:
 
1275
            b = Branch.open_containing('.')
 
1276
            revno = revision[0].in_history(b).revno
 
1277
        merge(('.', revno), parse_spec('.'),
1247
1278
              check_clean=False,
1248
1279
              ignore_zero=True,
1249
1280
              backup_files=not no_backup,
1250
1281
              file_list=file_list)
1251
1282
        if not file_list:
1252
 
            Branch('.').set_pending_merges([])
 
1283
            Branch.open_containing('.').set_pending_merges([])
1253
1284
 
1254
1285
 
1255
1286
class cmd_assert_fail(Command):
1321
1352
        if verbose and quiet:
1322
1353
            raise BzrCommandError('Cannot pass both quiet and verbose')
1323
1354
 
1324
 
        b = find_branch('.')
 
1355
        b = Branch.open_containing('.')
1325
1356
        parent = b.get_parent()
1326
1357
        if remote is None:
1327
1358
            if parent is None:
1331
1362
                    print "Using last location: %s" % parent
1332
1363
                remote = parent
1333
1364
        elif parent is None:
1334
 
            # We only update x-pull if it did not exist, missing should not change the parent
1335
 
            b.controlfile('x-pull', 'wb').write(remote + '\n')
1336
 
        br_remote = find_branch(remote)
 
1365
            # We only update parent if it did not exist, missing
 
1366
            # should not change the parent
 
1367
            b.set_parent(remote)
 
1368
        br_remote = Branch.open_containing(remote)
1337
1369
 
1338
1370
        return show_missing(b, br_remote, verbose=verbose, quiet=quiet)
1339
1371