~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: Martin Pool
  • Date: 2005-07-18 14:28:13 UTC
  • Revision ID: mbp@sourcefrog.net-20050718142813-253ec02b9636bd98
- add stubbed-out test for clashing replace and delete

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
# TODO: Don't allow WorkingTrees to be constructed for remote branches.
18
18
 
19
 
# FIXME: I don't know if writing out the cache from the destructor is really a
20
 
# good idea, because destructors are considered poor taste in Python, and
21
 
# it's not predictable when it will be written out.
22
 
 
23
19
import os
24
 
import fnmatch
25
 
        
 
20
    
26
21
import bzrlib.tree
27
 
from bzrlib.osutils import appendpath, file_kind, isdir, splitpath
28
 
from bzrlib.errors import BzrCheckError
29
 
from bzrlib.trace import mutter
 
22
from errors import BzrCheckError
 
23
from trace import mutter
30
24
 
31
25
class WorkingTree(bzrlib.tree.Tree):
32
26
    """Working copy tree.
49
43
        # in the future we might want to do this more selectively
50
44
        hc = self._hashcache = HashCache(basedir)
51
45
        hc.read()
52
 
        hc.scan()
 
46
        for path, ie in inv.iter_entries():
 
47
            hc.get_sha1(path)
53
48
 
54
49
        if hc.needs_write:
55
50
            mutter("write hc")
56
51
            hc.write()
57
 
            
58
 
            
59
 
    def __del__(self):
60
 
        if self._hashcache.needs_write:
61
 
            self._hashcache.write()
 
52
 
62
53
 
63
54
 
64
55
    def __iter__(self):
75
66
 
76
67
    def __repr__(self):
77
68
        return "<%s of %s>" % (self.__class__.__name__,
78
 
                               getattr(self, 'basedir', None))
 
69
                               self.basedir)
79
70
 
80
71
 
81
72
 
137
128
 
138
129
        Skips the control directory.
139
130
        """
 
131
        from osutils import appendpath, file_kind
 
132
        import os
 
133
 
140
134
        inv = self._inventory
141
135
 
142
136
        def descend(from_dir_relpath, from_dir_id, dp):
204
198
        Currently returned depth-first, sorted by name within directories.
205
199
        """
206
200
        ## TODO: Work from given directory downwards
 
201
        from osutils import isdir, appendpath
 
202
        
207
203
        for path, dir_entry in self.inventory.directories():
208
204
            mutter("search for unknowns in %r" % path)
209
205
            dirabs = self.abspath(path)
266
262
        # Eventually it should be replaced with something more
267
263
        # accurate.
268
264
        
 
265
        import fnmatch
 
266
        from osutils import splitpath
 
267
        
269
268
        for pat in self.get_ignore_list():
270
269
            if '/' in pat or '\\' in pat:
271
270
                
285
284
        else:
286
285
            return None
287
286
        
 
287
 
 
288
        
 
289
        
 
290