serve: allow --daemon-postexec to be 'unlink:path' or 'none'
authorJun Wu <quark@fb.com>
Mon, 22 Feb 2016 17:30:02 +0000
changeset 28195 213c8cf02c49
parent 28194 7623ba92af72
child 28196 87de4a22e8c2
serve: allow --daemon-postexec to be 'unlink:path' or 'none' This patch changes the format of value of --daemon-postexec. Now it can be either to unlink a file, or a no-op. The following patch will make chg to use the no-op option.
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Mon Feb 22 16:59:08 2016 +0000
+++ b/mercurial/cmdutil.py	Mon Feb 22 17:30:02 2016 +0000
@@ -765,7 +765,7 @@
         try:
             if not runargs:
                 runargs = util.hgcmd() + sys.argv[1:]
-            runargs.append('--daemon-postexec=%s' % lockpath)
+            runargs.append('--daemon-postexec=unlink:%s' % lockpath)
             # Don't pass --cwd to the child process, because we've already
             # changed directory.
             for i in xrange(1, len(runargs)):
@@ -799,12 +799,16 @@
         writepid(util.getpid())
 
     if opts['daemon_postexec']:
-        lockpath = opts['daemon_postexec']
+        inst = opts['daemon_postexec']
         try:
             os.setsid()
         except AttributeError:
             pass
-        os.unlink(lockpath)
+        if inst.startswith('unlink:'):
+            lockpath = inst[7:]
+            os.unlink(lockpath)
+        elif inst != 'none':
+            raise error.Abort(_('invalid value for --daemon-postexec'))
         util.hidewindow()
         sys.stdout.flush()
         sys.stderr.flush()