~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/hashcache.py

  • Committer: Martin Pool
  • Date: 2005-09-13 01:40:45 UTC
  • Revision ID: mbp@sourcefrog.net-20050913014045-49f65739c33df949
- v5 xml no longer stores redundant inventory_id

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
# TODO: Perhaps return more details on the file to avoid statting it
24
24
# again: nonexistent, file type, size, etc
25
25
 
 
26
# TODO: Perhaps use a Python pickle instead of a text file; might be faster.
 
27
 
26
28
 
27
29
 
28
30
CACHE_HEADER = "### bzr hashcache v5\n"
31
33
 
32
34
from bzrlib.osutils import sha_file
33
35
from bzrlib.trace import mutter, warning
 
36
from bzrlib.atomicfile import AtomicFile
 
37
 
34
38
 
35
39
 
36
40
 
185
189
 
186
190
    def write(self):
187
191
        """Write contents of cache to file."""
188
 
        from atomicfile import AtomicFile
189
 
 
190
192
        outf = AtomicFile(self.cache_file_name(), 'wb')
191
193
        try:
192
194
            print >>outf, CACHE_HEADER,
222
224
            inf = file(fn, 'rb', buffering=65000)
223
225
        except IOError, e:
224
226
            mutter("failed to open %s: %s" % (fn, e))
 
227
            # better write it now so it is valid
 
228
            self.needs_write = True
225
229
            return
226
230
 
227
231
 
229
233
        if hdr != CACHE_HEADER:
230
234
            mutter('cache header marker not found at top of %s; discarding cache'
231
235
                   % fn)
 
236
            self.needs_write = True
232
237
            return
233
238
 
234
239
        for l in inf: