~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Martin Pool
  • Date: 2005-06-28 03:02:31 UTC
  • Revision ID: mbp@sourcefrog.net-20050628030231-d311e4ebcd467ef4
Merge John's import-speedup branch:

                                                                                         
  777 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:20:32 -0500
      revision-id: john@arbash-meinel.com-20050627032031-e82a50db3863b18e
      bzr selftest was not using the correct bzr

  776 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:20:22 -0500
      revision-id: john@arbash-meinel.com-20050627032021-c9f21fde989ddaee
      Add was using an old mutter

  775 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:02:33 -0500
      revision-id: john@arbash-meinel.com-20050627030233-9165cfe98fc63298
      Cleaned up to be less different

  774 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:54:53 -0500
      revision-id: john@arbash-meinel.com-20050627025452-4260d0e744edef43
      Allow BZR_PLUGIN_PATH='' to negate plugin loading.

  773 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:49:34 -0500
      revision-id: john@arbash-meinel.com-20050627024933-b7158f67b7b9eae5
      Finished the previous cleanup (allowing load_plugins to be called twice)

  772 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:45:08 -0500
      revision-id: john@arbash-meinel.com-20050627024508-723b1df510d196fc
      Work on making the tests pass. versioning.py is calling run_cmd directly, but plugins have been loaded.

  771 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:32:29 -0500
      revision-id: john@arbash-meinel.com-20050627023228-79972744d7c53e15
      Got it down a little bit more by removing import of tree and inventory.

  770 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:26:05 -0500
      revision-id: john@arbash-meinel.com-20050627022604-350b9773ef622f95
      Reducing the number of import from bzrlib/__init__.py and bzrlib/branch.py

  769 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:32:25 -0500
      revision-id: john@arbash-meinel.com-20050627013225-32dd044f10d23948
      Updated revision.py and xml.py to include SubElement.

  768 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:03:56 -0500
      revision-id: john@arbash-meinel.com-20050627010356-ee66919e1c377faf
      Minor typo

  767 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:03:13 -0500
      revision-id: john@arbash-meinel.com-20050627010312-40d024007eb85051
      Caching the import

  766 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:51:47 -0500
      revision-id: john@arbash-meinel.com-20050627005147-5281c99e48ed1834
      Created wrapper functions for lazy import of ElementTree

  765 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:46:37 -0500
      revision-id: john@arbash-meinel.com-20050627004636-bf432902004a94c5
      Removed all of the test imports of cElementTree

  764 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:43:59 -0500
      revision-id: john@arbash-meinel.com-20050627004358-d137fbe9570dd71b
      Trying to make bzr startup faster.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
import bzrlib
22
22
from bzrlib.trace import mutter, note, log_error
23
23
from bzrlib.errors import BzrError, BzrCheckError, BzrCommandError
24
 
from bzrlib.osutils import quotefn
25
 
from bzrlib import Branch, Inventory, InventoryEntry, BZRDIR, \
26
 
     format_date
 
24
from bzrlib.branch import find_branch
 
25
from bzrlib import BZRDIR
27
26
 
28
27
 
29
28
plugin_cmds = {}
304
303
    
305
304
    def run(self, all=False, show_ids=False, file_list=None):
306
305
        if file_list:
307
 
            b = Branch(file_list[0])
 
306
            b = find_branch(file_list[0])
308
307
            file_list = [b.relpath(x) for x in file_list]
309
308
            # special case: only one path was given and it's the root
310
309
            # of the branch
311
310
            if file_list == ['']:
312
311
                file_list = None
313
312
        else:
314
 
            b = Branch('.')
 
313
            b = find_branch('.')
315
314
        import status
316
315
        status.show_status(b, show_unchanged=all, show_ids=show_ids,
317
316
                           specific_files=file_list)
324
323
    takes_args = ['revision_id']
325
324
    
326
325
    def run(self, revision_id):
327
 
        Branch('.').get_revision(revision_id).write_xml(sys.stdout)
 
326
        find_branch('.').get_revision(revision_id).write_xml(sys.stdout)
328
327
 
329
328
 
330
329
class cmd_revno(Command):
332
331
 
333
332
    This is equal to the number of revisions on this branch."""
334
333
    def run(self):
335
 
        print Branch('.').revno()
 
334
        print find_branch('.').revno()
336
335
 
337
336
    
338
337
class cmd_add(Command):
360
359
    takes_options = ['verbose', 'no-recurse']
361
360
    
362
361
    def run(self, file_list, verbose=False, no_recurse=False):
363
 
        bzrlib.add.smart_add(file_list, verbose, not no_recurse)
 
362
        from bzrlib.add import smart_add
 
363
        smart_add(file_list, verbose, not no_recurse)
364
364
 
365
365
 
366
366
 
372
372
    takes_args = ['dir+']
373
373
 
374
374
    def run(self, dir_list):
375
 
        import os
376
 
        import bzrlib.branch
377
 
        
378
375
        b = None
379
376
        
380
377
        for d in dir_list:
381
378
            os.mkdir(d)
382
379
            if not b:
383
 
                b = bzrlib.branch.Branch(d)
 
380
                b = find_branch(d)
384
381
            b.add([d], verbose=True)
385
382
 
386
383
 
390
387
    hidden = True
391
388
    
392
389
    def run(self, filename):
393
 
        print Branch(filename).relpath(filename)
 
390
        print find_branch(filename).relpath(filename)
394
391
 
395
392
 
396
393
 
399
396
    takes_options = ['revision', 'show-ids']
400
397
    
401
398
    def run(self, revision=None, show_ids=False):
402
 
        b = Branch('.')
 
399
        b = find_branch('.')
403
400
        if revision == None:
404
401
            inv = b.read_working_inventory()
405
402
        else:
422
419
    """
423
420
    takes_args = ['source$', 'dest']
424
421
    def run(self, source_list, dest):
425
 
        b = Branch('.')
 
422
        b = find_branch('.')
426
423
 
427
424
        b.move([b.relpath(s) for s in source_list], b.relpath(dest))
428
425
 
444
441
    takes_args = ['from_name', 'to_name']
445
442
    
446
443
    def run(self, from_name, to_name):
447
 
        b = Branch('.')
 
444
        b = find_branch('.')
448
445
        b.rename_one(b.relpath(from_name), b.relpath(to_name))
449
446
 
450
447
 
473
470
        from shutil import rmtree
474
471
        import errno
475
472
        
476
 
        br_to = Branch('.')
 
473
        br_to = find_branch('.')
477
474
        stored_loc = None
478
475
        try:
479
476
            stored_loc = br_to.controlfile("x-pull", "rb").read().rstrip('\n')
487
484
                print "Using last location: %s" % stored_loc
488
485
                location = stored_loc
489
486
        cache_root = tempfile.mkdtemp()
 
487
        from bzrlib.branch import DivergedBranches
 
488
        br_from = find_branch(location)
 
489
        location = pull_loc(br_from)
 
490
        old_revno = br_to.revno()
490
491
        try:
491
492
            from branch import find_cached_branch, DivergedBranches
492
493
            br_from = find_cached_branch(location, cache_root)
521
522
    def run(self, from_location, to_location=None, revision=None):
522
523
        import errno
523
524
        from bzrlib.merge import merge
524
 
        from branch import find_cached_branch, DivergedBranches, NoSuchRevision
 
525
        from bzrlib.branch import DivergedBranches, NoSuchRevision, \
 
526
             find_cached_branch, Branch
525
527
        from shutil import rmtree
526
528
        from meta_store import CachedStore
527
529
        import tempfile
587
589
    takes_args = ['dir?']
588
590
 
589
591
    def run(self, dir='.'):
590
 
        b = Branch(dir)
 
592
        b = find_branch(dir)
591
593
        old_inv = b.basis_tree().inventory
592
594
        new_inv = b.read_working_inventory()
593
595
 
604
606
    def run(self, branch=None):
605
607
        import info
606
608
 
607
 
        from branch import find_branch
608
609
        b = find_branch(branch)
609
610
        info.show_info(b)
610
611
 
619
620
    takes_options = ['verbose']
620
621
    
621
622
    def run(self, file_list, verbose=False):
622
 
        b = Branch(file_list[0])
 
623
        b = find_branch(file_list[0])
623
624
        b.remove([b.relpath(f) for f in file_list], verbose=verbose)
624
625
 
625
626
 
633
634
    hidden = True
634
635
    takes_args = ['filename']
635
636
    def run(self, filename):
636
 
        b = Branch(filename)
 
637
        b = find_branch(filename)
637
638
        i = b.inventory.path2id(b.relpath(filename))
638
639
        if i == None:
639
640
            raise BzrError("%r is not a versioned file" % filename)
649
650
    hidden = True
650
651
    takes_args = ['filename']
651
652
    def run(self, filename):
652
 
        b = Branch(filename)
 
653
        b = find_branch(filename)
653
654
        inv = b.inventory
654
655
        fid = inv.path2id(b.relpath(filename))
655
656
        if fid == None:
662
663
    """Display list of revision ids on this branch."""
663
664
    hidden = True
664
665
    def run(self):
665
 
        for patchid in Branch('.').revision_history():
 
666
        for patchid in find_branch('.').revision_history():
666
667
            print patchid
667
668
 
668
669
 
669
670
class cmd_directories(Command):
670
671
    """Display list of versioned directories in this branch."""
671
672
    def run(self):
672
 
        for name, ie in Branch('.').read_working_inventory().directories():
 
673
        for name, ie in find_branch('.').read_working_inventory().directories():
673
674
            if name == '':
674
675
                print '.'
675
676
            else:
690
691
        bzr commit -m 'imported project'
691
692
    """
692
693
    def run(self):
 
694
        from bzrlib.branch import Branch
693
695
        Branch('.', init=True)
694
696
 
695
697
 
723
725
 
724
726
    def run(self, revision=None, file_list=None, diff_options=None):
725
727
        from bzrlib.diff import show_diff
726
 
        from bzrlib import find_branch
727
728
 
728
729
        if file_list:
729
730
            b = find_branch(file_list[0])
732
733
                # just pointing to top-of-tree
733
734
                file_list = None
734
735
        else:
735
 
            b = Branch('.')
 
736
            b = find_branch('.')
736
737
    
737
738
        show_diff(b, revision, specific_files=file_list,
738
739
                  external_diff_options=diff_options)
747
748
    TODO: Show files deleted since a previous revision, or between two revisions.
748
749
    """
749
750
    def run(self, show_ids=False):
750
 
        b = Branch('.')
 
751
        b = find_branch('.')
751
752
        old = b.basis_tree()
752
753
        new = b.working_tree()
753
754
 
769
770
    hidden = True
770
771
    def run(self):
771
772
        import statcache
772
 
        b = Branch('.')
 
773
        b = find_branch('.')
773
774
        inv = b.read_working_inventory()
774
775
        sc = statcache.update_cache(b, inv)
775
776
        basis = b.basis_tree()
795
796
    """List files added in working tree."""
796
797
    hidden = True
797
798
    def run(self):
798
 
        b = Branch('.')
 
799
        b = find_branch('.')
799
800
        wt = b.working_tree()
800
801
        basis_inv = b.basis_tree().inventory
801
802
        inv = wt.inventory
817
818
    takes_args = ['filename?']
818
819
    def run(self, filename=None):
819
820
        """Print the branch root."""
820
 
        from branch import find_branch
821
821
        b = find_branch(filename)
822
822
        print getattr(b, 'base', None) or getattr(b, 'baseurl')
823
823
 
841
841
            show_ids=False,
842
842
            forward=False,
843
843
            revision=None):
844
 
        from bzrlib import show_log, find_branch
845
 
        from bzrlib.log import log_formatter
 
844
        from bzrlib.branch import find_branch
 
845
        from bzrlib.log import log_formatter, show_log
846
846
        import codecs
847
847
 
848
848
        direction = (forward and 'forward') or 'reverse'
896
896
    hidden = True
897
897
    takes_args = ["filename"]
898
898
    def run(self, filename):
899
 
        b = Branch(filename)
 
899
        b = find_branch(filename)
900
900
        inv = b.read_working_inventory()
901
901
        file_id = inv.path2id(b.relpath(filename))
902
902
        for revno, revision_id, what in bzrlib.log.find_touching_revisions(b, file_id):
910
910
    """
911
911
    hidden = True
912
912
    def run(self, revision=None, verbose=False):
913
 
        b = Branch('.')
 
913
        b = find_branch('.')
914
914
        if revision == None:
915
915
            tree = b.working_tree()
916
916
        else:
934
934
class cmd_unknowns(Command):
935
935
    """List unknown files."""
936
936
    def run(self):
937
 
        for f in Branch('.').unknowns():
 
937
        from bzrlib.osutils import quotefn
 
938
        for f in find_branch('.').unknowns():
938
939
            print quotefn(f)
939
940
 
940
941
 
962
963
        from bzrlib.atomicfile import AtomicFile
963
964
        import os.path
964
965
 
965
 
        b = Branch('.')
 
966
        b = find_branch('.')
966
967
        ifn = b.abspath('.bzrignore')
967
968
 
968
969
        if os.path.exists(ifn):
1002
1003
 
1003
1004
    See also: bzr ignore"""
1004
1005
    def run(self):
1005
 
        tree = Branch('.').working_tree()
 
1006
        tree = find_branch('.').working_tree()
1006
1007
        for path, file_class, kind, file_id in tree.list_files():
1007
1008
            if file_class != 'I':
1008
1009
                continue
1026
1027
        except ValueError:
1027
1028
            raise BzrCommandError("not a valid revision-number: %r" % revno)
1028
1029
 
1029
 
        print Branch('.').lookup_revision(revno)
 
1030
        print find_branch('.').lookup_revision(revno)
1030
1031
 
1031
1032
 
1032
1033
class cmd_export(Command):
1040
1041
    takes_args = ['dest']
1041
1042
    takes_options = ['revision', 'format']
1042
1043
    def run(self, dest, revision=None, format='dir'):
1043
 
        b = Branch('.')
 
1044
        b = find_branch('.')
1044
1045
        if revision == None:
1045
1046
            rh = b.revision_history()[-1]
1046
1047
        else:
1058
1059
    def run(self, filename, revision=None):
1059
1060
        if revision == None:
1060
1061
            raise BzrCommandError("bzr cat requires a revision number")
1061
 
        b = Branch('.')
 
1062
        b = find_branch('.')
1062
1063
        b.print_file(b.relpath(filename), int(revision))
1063
1064
 
1064
1065
 
1114
1115
            import codecs
1115
1116
            message = codecs.open(file, 'rt', bzrlib.user_encoding).read()
1116
1117
 
1117
 
        b = Branch('.')
 
1118
        b = find_branch('.')
1118
1119
        commit(b, message, verbose=verbose, specific_files=selected_list)
1119
1120
 
1120
1121
 
1130
1131
    takes_args = ['dir?']
1131
1132
 
1132
1133
    def run(self, dir='.'):
1133
 
        import bzrlib.check
1134
 
        bzrlib.check.check(Branch(dir))
 
1134
        from bzrlib.check import check
 
1135
        check(find_branch(dir))
1135
1136
 
1136
1137
 
1137
1138
 
1145
1146
 
1146
1147
    def run(self, dir='.'):
1147
1148
        from bzrlib.upgrade import upgrade
1148
 
        upgrade(Branch(dir))
 
1149
        upgrade(find_branch(dir))
1149
1150
 
1150
1151
 
1151
1152
 
1310
1311
    hidden = True
1311
1312
    def run(self):
1312
1313
        import statcache
1313
 
        b = Branch('.')
 
1314
        b = find_branch('.')
1314
1315
        statcache.update_cache(b.base, b.read_working_inventory())
1315
1316
 
1316
1317
 
1586
1587
        # some options like --builtin and --no-plugins have special effects
1587
1588
        argv, master_opts = _parse_master_args(argv)
1588
1589
        if not master_opts['no-plugins']:
1589
 
            bzrlib.load_plugins()
 
1590
            from bzrlib.plugin import load_plugins
 
1591
            load_plugins()
1590
1592
 
1591
1593
        args, opts = parse_args(argv)
1592
1594
 
1681
1683
 
1682
1684
 
1683
1685
def main(argv):
1684
 
    import errno
1685
1686
    
1686
 
    bzrlib.open_tracefile(argv)
 
1687
    bzrlib.trace.open_tracefile(argv)
1687
1688
 
1688
1689
    try:
1689
1690
        try:
1710
1711
            _report_exception('interrupted', quiet=True)
1711
1712
            return 2
1712
1713
        except Exception, e:
 
1714
            import errno
1713
1715
            quiet = False
1714
1716
            if (isinstance(e, IOError) 
1715
1717
                and hasattr(e, 'errno')