~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/statcache.py

  • Committer: Martin Pool
  • Date: 2005-05-11 02:22:26 UTC
  • Revision ID: mbp@sourcefrog.net-20050511022225-fcf4f70dce45d2c8
- Split WorkingTree into its own file
- pychecker fixes
- statcache works in terms of just directories, not branches
- use statcache from workingtree when getting file SHA-1 so that 
  diffs are faster

Show diffs side-by-side

added added

removed removed

Lines of Context:
82
82
            fs.st_ctime, fs.st_ino, fs.st_dev)
83
83
 
84
84
 
85
 
def _write_cache(branch, entry_iter, dangerfiles):
 
85
def _write_cache(basedir, entry_iter, dangerfiles):
86
86
    from atomicfile import AtomicFile
87
 
    
88
 
    outf = AtomicFile(branch.controlfilename('stat-cache'), 'wb', 'utf-8')
 
87
 
 
88
    cachefn = os.path.join(basedir, '.bzr', 'stat-cache')
 
89
    outf = AtomicFile(cachefn, 'wb', 'utf-8')
89
90
    try:
90
91
        for entry in entry_iter:
91
92
            if entry[0] in dangerfiles:
100
101
            outf.abort()
101
102
        
102
103
        
103
 
def load_cache(branch):
 
104
def load_cache(basedir):
 
105
    import codecs
 
106
    
104
107
    cache = {}
105
108
 
106
109
    try:
107
 
        cachefile = branch.controlfile('stat-cache', 'r')
 
110
        cachefn = os.path.join(basedir, '.bzr', 'stat-cache')
 
111
        cachefile = codecs.open(cachefn, 'r', 'utf-8')
108
112
    except IOError:
109
113
        return cache
110
114
    
127
131
    
128
132
 
129
133
 
130
 
def update_cache(branch, inv=None, flush=False):
 
134
def update_cache(basedir, inv, flush=False):
131
135
    """Update and return the cache for the branch.
132
136
 
133
137
    The returned cache may contain entries that have not been written
145
149
    if flush:
146
150
        cache = {}
147
151
    else:
148
 
        cache = load_cache(branch)
149
 
    if inv == None:
150
 
        inv = branch.read_working_inventory()
151
 
    return _update_cache_from_list(branch, cache, _files_from_inventory(inv))
152
 
 
153
 
 
154
 
 
155
 
def _update_cache_from_list(branch, cache, to_update):
 
152
        cache = load_cache(basedir)
 
153
    return _update_cache_from_list(basedir, cache, _files_from_inventory(inv))
 
154
 
 
155
 
 
156
 
 
157
def _update_cache_from_list(basedir, cache, to_update):
156
158
    """Update and return the cache for given files.
157
159
 
158
160
    cache -- Previously cached values to be validated.
171
173
    now = int(time.time())
172
174
    
173
175
    for file_id, path in to_update:
174
 
        fap = branch.abspath(path)
 
176
        fap = os.path.join(basedir, path)
175
177
        fp = fingerprint(fap, path)
176
178
        cacheentry = cache.get(file_id)
177
179
 
204
206
        
205
207
    if dirty:
206
208
        mutter('updating on-disk statcache')
207
 
        _write_cache(branch, cache.itervalues(), dangerfiles)
 
209
        _write_cache(basedir, cache.itervalues(), dangerfiles)
208
210
 
209
211
    return cache