~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)

> When you use flat string on Windows for base part of file names then all
> derived file names is always representing as flat string. On Linux/Cygwin as
> I can see in situations when path cannot be represented as flat string (or in
> ascii encoding?) it silently converted to unicode. As result we have
> different behaviour with non-ascii (non-english) file names.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
from bzrlib.workingtree import WorkingTree
39
39
 
40
40
 
41
 
def tree_files(file_list, default_branch='.'):
 
41
def tree_files(file_list, default_branch=u'.'):
42
42
    try:
43
43
        return internal_tree_files(file_list, default_branch)
44
44
    except FileInWrongBranch, e:
45
45
        raise BzrCommandError("%s is not in the same branch as %s" %
46
46
                             (e.path, file_list[0]))
47
47
 
48
 
def internal_tree_files(file_list, default_branch='.'):
 
48
def internal_tree_files(file_list, default_branch=u'.'):
49
49
    """\
50
50
    Return a branch and list of branch-relative paths.
51
51
    If supplied file_list is empty or None, the branch default will be used,
142
142
            raise BzrCommandError('You can only supply one of revision_id or --revision')
143
143
        if revision_id is None and revision is None:
144
144
            raise BzrCommandError('You must supply either --revision or a revision_id')
145
 
        b = WorkingTree.open_containing('.')[0].branch
 
145
        b = WorkingTree.open_containing(u'.')[0].branch
146
146
        if revision_id is not None:
147
147
            sys.stdout.write(b.get_revision_xml(revision_id))
148
148
        elif revision is not None:
159
159
    This is equal to the number of revisions on this branch."""
160
160
    @display_command
161
161
    def run(self):
162
 
        print Branch.open_containing('.')[0].revno()
 
162
        print Branch.open_containing(u'.')[0].revno()
163
163
 
164
164
 
165
165
class cmd_revision_info(Command):
180
180
        if len(revs) == 0:
181
181
            raise BzrCommandError('You must supply a revision identifier')
182
182
 
183
 
        b = WorkingTree.open_containing('.')[0].branch
 
183
        b = WorkingTree.open_containing(u'.')[0].branch
184
184
 
185
185
        for rev in revs:
186
186
            revinfo = rev.in_history(b)
263
263
    def run(self, revision=None, show_ids=False, kind=None):
264
264
        if kind and kind not in ['file', 'directory', 'symlink']:
265
265
            raise BzrCommandError('invalid kind specified')
266
 
        tree = WorkingTree.open_containing('.')[0]
 
266
        tree = WorkingTree.open_containing(u'.')[0]
267
267
        if revision is None:
268
268
            inv = tree.read_working_inventory()
269
269
        else:
375
375
        from shutil import rmtree
376
376
        import errno
377
377
        # FIXME: too much stuff is in the command class        
378
 
        tree_to = WorkingTree.open_containing('.')[0]
 
378
        tree_to = WorkingTree.open_containing(u'.')[0]
379
379
        stored_loc = tree_to.branch.get_parent()
380
380
        if location is None:
381
381
            if stored_loc is None:
441
441
        from shutil import rmtree
442
442
        from bzrlib.transport import get_transport
443
443
        
444
 
        tree_from = WorkingTree.open_containing('.')[0]
 
444
        tree_from = WorkingTree.open_containing(u'.')[0]
445
445
        br_from = tree_from.branch
446
446
        stored_loc = tree_from.branch.get_push_location()
447
447
        if location is None:
582
582
    takes_args = ['dir?']
583
583
 
584
584
    @display_command
585
 
    def run(self, dir='.'):
 
585
    def run(self, dir=u'.'):
586
586
        tree = WorkingTree.open_containing(dir)[0]
587
587
        old_inv = tree.branch.basis_tree().inventory
588
588
        new_inv = tree.read_working_inventory()
661
661
    hidden = True
662
662
    @display_command
663
663
    def run(self):
664
 
        branch = WorkingTree.open_containing('.')[0].branch
 
664
        branch = WorkingTree.open_containing(u'.')[0].branch
665
665
        for patchid in branch.revision_history():
666
666
            print patchid
667
667
 
671
671
    hidden = True
672
672
    @display_command
673
673
    def run(self):
674
 
        tree = WorkingTree.open_containing('.')[0]
 
674
        tree = WorkingTree.open_containing(u'.')[0]
675
675
        b = tree.branch
676
676
        # FIXME. should be tree.last_revision
677
677
        for revision_id in b.get_ancestry(b.last_revision()):
695
695
    def run(self, location=None):
696
696
        from bzrlib.branch import Branch
697
697
        if location is None:
698
 
            location = '.'
 
698
            location = u'.'
699
699
        else:
700
700
            # The path has to exist to initialize a
701
701
            # branch inside of it.
785
785
    # if the directories are very large...)
786
786
    @display_command
787
787
    def run(self, show_ids=False):
788
 
        tree = WorkingTree.open_containing('.')[0]
 
788
        tree = WorkingTree.open_containing(u'.')[0]
789
789
        old = tree.branch.basis_tree()
790
790
        for path, ie in old.inventory.iter_entries():
791
791
            if not tree.has_id(ie.file_id):
802
802
    def run(self):
803
803
        from bzrlib.delta import compare_trees
804
804
 
805
 
        tree = WorkingTree.open_containing('.')[0]
 
805
        tree = WorkingTree.open_containing(u'.')[0]
806
806
        td = compare_trees(tree.branch.basis_tree(), tree)
807
807
 
808
808
        for path, id, kind, text_modified, meta_modified in td.modified:
815
815
    hidden = True
816
816
    @display_command
817
817
    def run(self):
818
 
        wt = WorkingTree.open_containing('.')[0]
 
818
        wt = WorkingTree.open_containing(u'.')[0]
819
819
        basis_inv = wt.branch.basis_tree().inventory
820
820
        inv = wt.inventory
821
821
        for file_id in inv:
898
898
            else:
899
899
                file_id = None  # points to branch root
900
900
        else:
901
 
            tree, relpath = WorkingTree.open_containing('.')
 
901
            tree, relpath = WorkingTree.open_containing(u'.')
902
902
            b = tree.branch
903
903
            file_id = None
904
904
 
990
990
 
991
991
        selection = {'I':ignored, '?':unknown, 'V':versioned}
992
992
 
993
 
        tree, relpath = WorkingTree.open_containing('.')
 
993
        tree, relpath = WorkingTree.open_containing(u'.')
994
994
        if from_root:
995
 
            relpath = ''
 
995
            relpath = u''
996
996
        elif relpath:
997
997
            relpath += '/'
998
998
        if revision is not None:
1021
1021
    @display_command
1022
1022
    def run(self):
1023
1023
        from bzrlib.osutils import quotefn
1024
 
        for f in WorkingTree.open_containing('.')[0].unknowns():
 
1024
        for f in WorkingTree.open_containing(u'.')[0].unknowns():
1025
1025
            print quotefn(f)
1026
1026
 
1027
1027
 
1050
1050
        from bzrlib.atomicfile import AtomicFile
1051
1051
        import os.path
1052
1052
 
1053
 
        tree, relpath = WorkingTree.open_containing('.')
 
1053
        tree, relpath = WorkingTree.open_containing(u'.')
1054
1054
        ifn = tree.abspath('.bzrignore')
1055
1055
 
1056
1056
        if os.path.exists(ifn):
1090
1090
    See also: bzr ignore"""
1091
1091
    @display_command
1092
1092
    def run(self):
1093
 
        tree = WorkingTree.open_containing('.')[0]
 
1093
        tree = WorkingTree.open_containing(u'.')[0]
1094
1094
        for path, file_class, kind, file_id, entry in tree.list_files():
1095
1095
            if file_class != 'I':
1096
1096
                continue
1115
1115
        except ValueError:
1116
1116
            raise BzrCommandError("not a valid revision-number: %r" % revno)
1117
1117
 
1118
 
        print WorkingTree.open_containing('.')[0].branch.get_rev_id(revno)
 
1118
        print WorkingTree.open_containing(u'.')[0].branch.get_rev_id(revno)
1119
1119
 
1120
1120
 
1121
1121
class cmd_export(Command):
1145
1145
    def run(self, dest, revision=None, format=None, root=None):
1146
1146
        import os.path
1147
1147
        from bzrlib.export import export
1148
 
        tree = WorkingTree.open_containing('.')[0]
 
1148
        tree = WorkingTree.open_containing(u'.')[0]
1149
1149
        b = tree.branch
1150
1150
        if revision is None:
1151
1151
            # should be tree.last_revision  FIXME
1297
1297
    def run(self):
1298
1298
        from bzrlib.hashcache import HashCache
1299
1299
 
1300
 
        c = HashCache('.')
 
1300
        c = HashCache(u'.')
1301
1301
        c.read()
1302
1302
        c.scan()
1303
1303
            
1323
1323
    """
1324
1324
    takes_args = ['dir?']
1325
1325
 
1326
 
    def run(self, dir='.'):
 
1326
    def run(self, dir=u'.'):
1327
1327
        from bzrlib.upgrade import upgrade
1328
1328
        upgrade(dir)
1329
1329
 
1335
1335
    @display_command
1336
1336
    def run(self, email=False):
1337
1337
        try:
1338
 
            b = WorkingTree.open_containing('.')[0].branch
 
1338
            b = WorkingTree.open_containing(u'.')[0].branch
1339
1339
            config = bzrlib.config.BranchConfig(b)
1340
1340
        except NotBranchError:
1341
1341
            config = bzrlib.config.GlobalConfig()
1353
1353
    """
1354
1354
    takes_args = ['nickname?']
1355
1355
    def run(self, nickname=None):
1356
 
        branch = Branch.open_containing('.')[0]
 
1356
        branch = Branch.open_containing(u'.')[0]
1357
1357
        if nickname is None:
1358
1358
            self.printme(branch)
1359
1359
        else:
1518
1518
        if merge_type is None:
1519
1519
            merge_type = ApplyMerge3
1520
1520
        if branch is None:
1521
 
            branch = WorkingTree.open_containing('.')[0].branch.get_parent()
 
1521
            branch = WorkingTree.open_containing(u'.')[0].branch.get_parent()
1522
1522
            if branch is None:
1523
1523
                raise BzrCommandError("No merge location known or specified.")
1524
1524
            else:
1641
1641
            file_list = []
1642
1642
        if revision is None:
1643
1643
            revno = -1
1644
 
            tree = WorkingTree.open_containing('.')[0]
 
1644
            tree = WorkingTree.open_containing(u'.')[0]
1645
1645
            # FIXME should be tree.last_revision
1646
1646
            rev_id = tree.branch.last_revision()
1647
1647
        elif len(revision) != 1:
1730
1730
        if verbose and is_quiet():
1731
1731
            raise BzrCommandError('Cannot pass both quiet and verbose')
1732
1732
 
1733
 
        tree = WorkingTree.open_containing('.')[0]
 
1733
        tree = WorkingTree.open_containing(u'.')[0]
1734
1734
        parent = tree.branch.get_parent()
1735
1735
        if remote is None:
1736
1736
            if parent is None:
1773
1773
    takes_options = ['revision', 'long']
1774
1774
    takes_args = ['branch?']
1775
1775
    @display_command
1776
 
    def run(self, branch='.', revision=None, long=False):
 
1776
    def run(self, branch=u'.', revision=None, long=False):
1777
1777
        from bzrlib.testament import Testament
1778
1778
        b = WorkingTree.open_containing(branch)[0].branch
1779
1779
        b.lock_read()
1840
1840
            raise BzrCommandError('You can only supply one of revision_id or --revision')
1841
1841
        if revision_id is None and revision is None:
1842
1842
            raise BzrCommandError('You must supply either --revision or a revision_id')
1843
 
        b = WorkingTree.open_containing('.')[0].branch
 
1843
        b = WorkingTree.open_containing(u'.')[0].branch
1844
1844
        gpg_strategy = gpg.GPGStrategy(config.BranchConfig(b))
1845
1845
        if revision_id is not None:
1846
1846
            b.sign_revision(revision_id, gpg_strategy)
1893
1893
        from bzrlib.uncommit import uncommit
1894
1894
 
1895
1895
        if location is None:
1896
 
            location = '.'
 
1896
            location = u'.'
1897
1897
        b, relpath = Branch.open_containing(location)
1898
1898
 
1899
1899
        if revision is None: