# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 2015-09-25 19:39:23
# Node ID efd57cd6fd1d5eb76102fabfc45676873bbba29d
# Parent  431094a3b21fa875b5fdc3e4a04404a2936a5abf

localrepo: allow wlock to be inherited

This is part of a series that will allow locks to be inherited by subprocesses
in limited circumstances.

When allowed, the parent process will pass down requisite information to the
child process by way of this environment variable.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1296,7 +1296,7 @@ class localrepository(object):
 
         l = self._lock(self.vfs, "wlock", wait, unlock,
                        self.invalidatedirstate, _('working directory of %s') %
-                       self.origroot)
+                       self.origroot, parentenvvar='HG_WLOCK_LOCKER')
         self._wlockref = weakref.ref(l)
         return l
 
diff --git a/tests/test-fncache.t b/tests/test-fncache.t
--- a/tests/test-fncache.t
+++ b/tests/test-fncache.t
@@ -205,7 +205,7 @@ Aborting lock does not prevent fncache w
   > from mercurial import commands, util
   > from mercurial.extensions import wrapfunction
   > 
-  > def lockexception(orig, vfs, lockname, wait, releasefn, acquirefn, desc):
+  > def lockexception(orig, vfs, lockname, wait, releasefn, acquirefn, desc, parentenvvar=None):
   >     def releasewrap():
   >         raise util.Abort("forced lock failure")
   >     return orig(vfs, lockname, wait, releasewrap, acquirefn, desc)