~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: John Arbash Meinel
  • Date: 2006-04-25 15:05:42 UTC
  • mfrom: (1185.85.85 bzr-encoding)
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: john@arbash-meinel.com-20060425150542-c7b518dca9928691
[merge] the old bzr-encoding changes, reparenting them on bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
import errno
45
45
import fnmatch
46
46
import os
 
47
import re
47
48
import stat
48
49
 
49
50
 
100
101
import bzrlib.ui
101
102
import bzrlib.xml5
102
103
 
 
104
_non_word_re = None
 
105
def _get_non_word_re():
 
106
    """Get the compiled regular expression for non-unicode words."""
 
107
    global _non_word_re
 
108
    if _non_word_re is None:
 
109
 
 
110
        # TODO: jam 20060106 Currently the BZR codebase can't really handle
 
111
        #           unicode ids. There are a lot of code paths which don't
 
112
        #           expect them. And we need to do more serious testing
 
113
        #           before we enable unicode in ids.
 
114
        #_non_word_re = re.compile(r'[^\w.]', re.UNICODE)
 
115
        _non_word_re = re.compile(r'[^\w.]')
 
116
    return _non_word_re
 
117
 
103
118
 
104
119
def gen_file_id(name):
105
120
    """Return new file id.
106
121
 
107
122
    This should probably generate proper UUIDs, but for the moment we
108
123
    cope with just randomness because running uuidgen every time is
109
 
    slow."""
110
 
    import re
 
124
    slow.
 
125
    """
111
126
    from binascii import hexlify
112
127
    from time import time
113
128
 
124
139
 
125
140
    # remove any wierd characters; we don't escape them but rather
126
141
    # just pull them out
127
 
    name = re.sub(r'[^\w.]', '', name)
 
142
    non_word = _get_non_word_re()
 
143
    name = non_word.sub('', name)
128
144
 
129
145
    s = hexlify(rand_bytes(8))
130
146
    return '-'.join((name, compact_date(time()), s))
975
991
        l = bzrlib.DEFAULT_IGNORE[:]
976
992
        if self.has_filename(bzrlib.IGNORE_FILENAME):
977
993
            f = self.get_file_byname(bzrlib.IGNORE_FILENAME)
978
 
            l.extend([line.rstrip("\n\r") for line in f.readlines()])
 
994
            l.extend([line.rstrip("\n\r").decode('utf-8') 
 
995
                      for line in f.readlines()])
979
996
        self._ignorelist = l
980
997
        return l
981
998
 
998
1015
        # treat dotfiles correctly and allows * to match /.
999
1016
        # Eventually it should be replaced with something more
1000
1017
        # accurate.
 
1018
 
 
1019
        # FIXME: fnmatch also won't match unicode exact path filenames.
 
1020
        #        it does seem to handle wildcard, as long as the non-wildcard
 
1021
        #        characters are ascii.
1001
1022
        
1002
1023
        for pat in self.get_ignore_list():
1003
1024
            if '/' in pat or '\\' in pat: