comparison mercurial/repair.py @ 32196:a2be2abe9476

strip: move tree strip logic to it's own function This will allow external extensions to modify tree strip behavior more precisely.
author Durham Goode <durham@fb.com>
date Mon, 08 May 2017 11:35:23 -0700
parents b6d792a9bd11
children 7bcc9a5ab96e
comparison
equal deleted inserted replaced
32195:9d3136638784 32196:a2be2abe9476
163 offset = len(tr.entries) 163 offset = len(tr.entries)
164 164
165 tr.startgroup() 165 tr.startgroup()
166 cl.strip(striprev, tr) 166 cl.strip(striprev, tr)
167 mfst.strip(striprev, tr) 167 mfst.strip(striprev, tr)
168 if 'treemanifest' in repo.requirements: # safe but unnecessary 168 striptrees(repo, tr, striprev, files)
169 # otherwise 169
170 for unencoded, encoded, size in repo.store.datafiles():
171 if (unencoded.startswith('meta/') and
172 unencoded.endswith('00manifest.i')):
173 dir = unencoded[5:-12]
174 repo.manifestlog._revlog.dirlog(dir).strip(striprev, tr)
175 for fn in files: 170 for fn in files:
176 repo.file(fn).strip(striprev, tr) 171 repo.file(fn).strip(striprev, tr)
177 tr.endgroup() 172 tr.endgroup()
178 173
179 for i in xrange(offset, len(tr.entries)): 174 for i in xrange(offset, len(tr.entries)):
238 repo.destroyed() 233 repo.destroyed()
239 # return the backup file path (or None if 'backup' was False) so 234 # return the backup file path (or None if 'backup' was False) so
240 # extensions can use it 235 # extensions can use it
241 return backupfile 236 return backupfile
242 237
238 def striptrees(repo, tr, striprev, files):
239 if 'treemanifest' in repo.requirements: # safe but unnecessary
240 # otherwise
241 for unencoded, encoded, size in repo.store.datafiles():
242 if (unencoded.startswith('meta/') and
243 unencoded.endswith('00manifest.i')):
244 dir = unencoded[5:-12]
245 repo.manifestlog._revlog.dirlog(dir).strip(striprev, tr)
246
243 def rebuildfncache(ui, repo): 247 def rebuildfncache(ui, repo):
244 """Rebuilds the fncache file from repo history. 248 """Rebuilds the fncache file from repo history.
245 249
246 Missing entries will be added. Extra entries will be removed. 250 Missing entries will be added. Extra entries will be removed.
247 """ 251 """