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