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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
446 | if cleandir is not None: | |
458 |
|
|
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