comparison mercurial/hg.py @ 24440:27ad6b91f5c2

clone: add progress support to hardlink clones (issue3059)
author Augie Fackler <augie@google.com>
date Fri, 13 Mar 2015 18:28:11 -0400
parents 6ddc86eedc3b
children e0b0fbd47491
comparison
equal deleted inserted replaced
24439:2ddfac2f163e 24440:27ad6b91f5c2
241 ''' 241 '''
242 destlock = None 242 destlock = None
243 try: 243 try:
244 hardlink = None 244 hardlink = None
245 num = 0 245 num = 0
246 closetopic = [None]
247 def prog(topic, pos):
248 if pos is None:
249 closetopic[0] = topic
250 else:
251 ui.progress(topic, pos + num)
246 srcpublishing = srcrepo.ui.configbool('phases', 'publish', True) 252 srcpublishing = srcrepo.ui.configbool('phases', 'publish', True)
247 srcvfs = scmutil.vfs(srcrepo.sharedpath) 253 srcvfs = scmutil.vfs(srcrepo.sharedpath)
248 dstvfs = scmutil.vfs(destpath) 254 dstvfs = scmutil.vfs(destpath)
249 for f in srcrepo.store.copylist(): 255 for f in srcrepo.store.copylist():
250 if srcpublishing and f.endswith('phaseroots'): 256 if srcpublishing and f.endswith('phaseroots'):
257 # 'dstbase' may be empty (e.g. revlog format 0) 263 # 'dstbase' may be empty (e.g. revlog format 0)
258 lockfile = os.path.join(dstbase, "lock") 264 lockfile = os.path.join(dstbase, "lock")
259 # lock to avoid premature writing to the target 265 # lock to avoid premature writing to the target
260 destlock = lock.lock(dstvfs, lockfile) 266 destlock = lock.lock(dstvfs, lockfile)
261 hardlink, n = util.copyfiles(srcvfs.join(f), dstvfs.join(f), 267 hardlink, n = util.copyfiles(srcvfs.join(f), dstvfs.join(f),
262 hardlink) 268 hardlink, progress=prog)
263 num += n 269 num += n
264 if hardlink: 270 if hardlink:
265 ui.debug("linked %d files\n" % num) 271 ui.debug("linked %d files\n" % num)
272 if closetopic[0]:
273 ui.progress(closetopic[0], None)
266 else: 274 else:
267 ui.debug("copied %d files\n" % num) 275 ui.debug("copied %d files\n" % num)
276 if closetopic[0]:
277 ui.progress(closetopic[0], None)
268 return destlock 278 return destlock
269 except: # re-raises 279 except: # re-raises
270 release(destlock) 280 release(destlock)
271 raise 281 raise
272 282