--- a/mercurial/hg.py Fri Jan 13 02:29:38 2012 +0100
+++ b/mercurial/hg.py Fri Jan 13 02:30:43 2012 +0100
@@ -279,7 +279,7 @@
if self.dir_:
self.rmtree(self.dir_, True)
- srclock = destlock = dircleanup = None
+ srclock = destwlock = destlock = dircleanup = None
try:
abspath = origsource
if islocal(origsource):
@@ -325,6 +325,11 @@
# we need to re-init the repo after manually copying the data
# into it
destrepo = repository(remoteui(ui, peeropts), dest)
+ # we need full recursive locking of the new repo instance
+ destwlock = destrepo.wlock()
+ if destlock:
+ destlock.release() # a little race condition - but no deadlock
+ destlock = destrepo.lock()
srcrepo.hook('outgoing', source='clone',
node=node.hex(node.nullid))
else:
@@ -401,7 +406,7 @@
return srcrepo, destrepo
finally:
- release(srclock, destlock)
+ release(srclock, destlock, destwlock)
if dircleanup is not None:
dircleanup.cleanup()