##// END OF EJS Templates
hg: replace DirCleanup class with normal try/finally use
Augie Fackler -
r18441:1f794204 default
parent child Browse files
Show More
@@ -291,17 +291,7 b' def clone(ui, peeropts, source, dest=Non'
291 elif os.listdir(dest):
291 elif os.listdir(dest):
292 raise util.Abort(_("destination '%s' is not empty") % dest)
292 raise util.Abort(_("destination '%s' is not empty") % dest)
293
293
294 class DirCleanup(object):
294 srclock = destlock = cleandir = None
295 def __init__(self, dir_):
296 self.rmtree = shutil.rmtree
297 self.dir_ = dir_
298 def close(self):
299 self.dir_ = None
300 def cleanup(self):
301 if self.dir_:
302 self.rmtree(self.dir_, True)
303
304 srclock = destlock = dircleanup = None
305 srcrepo = srcpeer.local()
295 srcrepo = srcpeer.local()
306 try:
296 try:
307 abspath = origsource
297 abspath = origsource
@@ -309,7 +299,7 b' def clone(ui, peeropts, source, dest=Non'
309 abspath = os.path.abspath(util.urllocalpath(origsource))
299 abspath = os.path.abspath(util.urllocalpath(origsource))
310
300
311 if islocal(dest):
301 if islocal(dest):
312 dircleanup = DirCleanup(dest)
302 cleandir = dest
313
303
314 copy = False
304 copy = False
315 if (srcrepo and srcrepo.cancopy() and islocal(dest)
305 if (srcrepo and srcrepo.cancopy() and islocal(dest)
@@ -333,13 +323,13 b' def clone(ui, peeropts, source, dest=Non'
333 os.mkdir(dest)
323 os.mkdir(dest)
334 else:
324 else:
335 # only clean up directories we create ourselves
325 # only clean up directories we create ourselves
336 dircleanup.dir_ = hgdir
326 cleandir = hgdir
337 try:
327 try:
338 destpath = hgdir
328 destpath = hgdir
339 util.makedir(destpath, notindexed=True)
329 util.makedir(destpath, notindexed=True)
340 except OSError, inst:
330 except OSError, inst:
341 if inst.errno == errno.EEXIST:
331 if inst.errno == errno.EEXIST:
342 dircleanup.close()
332 cleandir = None
343 raise util.Abort(_("destination '%s' already exists")
333 raise util.Abort(_("destination '%s' already exists")
344 % dest)
334 % dest)
345 raise
335 raise
@@ -367,7 +357,7 b' def clone(ui, peeropts, source, dest=Non'
367 # only pass ui when no srcrepo
357 # only pass ui when no srcrepo
368 except OSError, inst:
358 except OSError, inst:
369 if inst.errno == errno.EEXIST:
359 if inst.errno == errno.EEXIST:
370 dircleanup.close()
360 cleandir = None
371 raise util.Abort(_("destination '%s' already exists")
361 raise util.Abort(_("destination '%s' already exists")
372 % dest)
362 % dest)
373 raise
363 raise
@@ -387,8 +377,7 b' def clone(ui, peeropts, source, dest=Non'
387 else:
377 else:
388 raise util.Abort(_("clone from remote to remote not supported"))
378 raise util.Abort(_("clone from remote to remote not supported"))
389
379
390 if dircleanup:
380 cleandir = None
391 dircleanup.close()
392
381
393 # clone all bookmarks except divergent ones
382 # clone all bookmarks except divergent ones
394 destrepo = destpeer.local()
383 destrepo = destpeer.local()
@@ -454,8 +443,8 b' def clone(ui, peeropts, source, dest=Non'
454 return srcpeer, destpeer
443 return srcpeer, destpeer
455 finally:
444 finally:
456 release(srclock, destlock)
445 release(srclock, destlock)
457 if dircleanup is not None:
446 if cleandir is not None:
458 dircleanup.cleanup()
447 shutil.rmtree(cleandir, True)
459 if srcpeer is not None:
448 if srcpeer is not None:
460 srcpeer.close()
449 srcpeer.close()
461
450
General Comments 0
You need to be logged in to leave comments. Login now