comparison mercurial/upgrade_utils/engine.py @ 46193:85f7cf314b39

engine: refactor actual cloning code into separate function The `for ...` under which this cloning code exists is too complicated and based on certain assumptions. I am going to refactor it in next patches and make it bit saner. Differential Revision: https://phab.mercurial-scm.org/D9579
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 14 Dec 2020 14:18:38 +0530
parents aba979b1b90b
children 4d1cec4e5e1f
comparison
equal deleted inserted replaced
46192:25d11b24dedf 46193:85f7cf314b39
114 if entry.endswith(b'00changelog.i'): 114 if entry.endswith(b'00changelog.i'):
115 return UPGRADE_CHANGELOG in revlogfilter 115 return UPGRADE_CHANGELOG in revlogfilter
116 elif entry.endswith(b'00manifest.i'): 116 elif entry.endswith(b'00manifest.i'):
117 return UPGRADE_MANIFEST in revlogfilter 117 return UPGRADE_MANIFEST in revlogfilter
118 return UPGRADE_FILELOGS in revlogfilter 118 return UPGRADE_FILELOGS in revlogfilter
119
120
121 def _perform_clone(
122 ui,
123 dstrepo,
124 tr,
125 old_revlog,
126 unencoded,
127 deltareuse,
128 forcedeltabothparents,
129 revlogs,
130 sidedatacompanion,
131 oncopiedrevision,
132 ):
133 """ returns the new revlog object created"""
134 newrl = None
135 if matchrevlog(revlogs, unencoded):
136 ui.note(
137 _(b'cloning %d revisions from %s\n') % (len(old_revlog), unencoded)
138 )
139 newrl = _revlogfrompath(dstrepo, unencoded)
140 old_revlog.clone(
141 tr,
142 newrl,
143 addrevisioncb=oncopiedrevision,
144 deltareuse=deltareuse,
145 forcedeltabothparents=forcedeltabothparents,
146 sidedatacompanion=sidedatacompanion,
147 )
148 else:
149 msg = _(b'blindly copying %s containing %i revisions\n')
150 ui.note(msg % (unencoded, len(old_revlog)))
151 _copyrevlog(tr, dstrepo, old_revlog, unencoded)
152
153 newrl = _revlogfrompath(dstrepo, unencoded)
154 return newrl
119 155
120 156
121 def _clonerevlogs( 157 def _clonerevlogs(
122 ui, 158 ui,
123 srcrepo, 159 srcrepo,
290 progress.complete() 326 progress.complete()
291 progress = srcrepo.ui.makeprogress( 327 progress = srcrepo.ui.makeprogress(
292 _(b'file revisions'), total=frevcount 328 _(b'file revisions'), total=frevcount
293 ) 329 )
294 330
295 if matchrevlog(revlogs, unencoded): 331 newrl = _perform_clone(
296 ui.note( 332 ui,
297 _(b'cloning %d revisions from %s\n') % (len(oldrl), unencoded) 333 dstrepo,
298 ) 334 tr,
299 newrl = _revlogfrompath(dstrepo, unencoded) 335 oldrl,
300 oldrl.clone( 336 unencoded,
301 tr, 337 deltareuse,
302 newrl, 338 forcedeltabothparents,
303 addrevisioncb=oncopiedrevision, 339 revlogs,
304 deltareuse=deltareuse, 340 sidedatacompanion,
305 forcedeltabothparents=forcedeltabothparents, 341 oncopiedrevision,
306 sidedatacompanion=sidedatacompanion, 342 )
307 )
308 else:
309 msg = _(b'blindly copying %s containing %i revisions\n')
310 ui.note(msg % (unencoded, len(oldrl)))
311 _copyrevlog(tr, dstrepo, oldrl, unencoded)
312
313 newrl = _revlogfrompath(dstrepo, unencoded)
314
315 info = newrl.storageinfo(storedsize=True) 343 info = newrl.storageinfo(storedsize=True)
316 datasize = info[b'storedsize'] or 0 344 datasize = info[b'storedsize'] or 0
317 345
318 dstsize += datasize 346 dstsize += datasize
319 347