comparison mercurial/cmdutil.py @ 28195:213c8cf02c49

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.
author Jun Wu <quark@fb.com>
date Mon, 22 Feb 2016 17:30:02 +0000
parents 7623ba92af72
children 41dcd7545266
comparison
equal deleted inserted replaced
28194:7623ba92af72 28195:213c8cf02c49
763 lockfd, lockpath = tempfile.mkstemp(prefix='hg-service-') 763 lockfd, lockpath = tempfile.mkstemp(prefix='hg-service-')
764 os.close(lockfd) 764 os.close(lockfd)
765 try: 765 try:
766 if not runargs: 766 if not runargs:
767 runargs = util.hgcmd() + sys.argv[1:] 767 runargs = util.hgcmd() + sys.argv[1:]
768 runargs.append('--daemon-postexec=%s' % lockpath) 768 runargs.append('--daemon-postexec=unlink:%s' % lockpath)
769 # Don't pass --cwd to the child process, because we've already 769 # Don't pass --cwd to the child process, because we've already
770 # changed directory. 770 # changed directory.
771 for i in xrange(1, len(runargs)): 771 for i in xrange(1, len(runargs)):
772 if runargs[i].startswith('--cwd='): 772 if runargs[i].startswith('--cwd='):
773 del runargs[i] 773 del runargs[i]
797 797
798 if not opts['daemon']: 798 if not opts['daemon']:
799 writepid(util.getpid()) 799 writepid(util.getpid())
800 800
801 if opts['daemon_postexec']: 801 if opts['daemon_postexec']:
802 lockpath = opts['daemon_postexec'] 802 inst = opts['daemon_postexec']
803 try: 803 try:
804 os.setsid() 804 os.setsid()
805 except AttributeError: 805 except AttributeError:
806 pass 806 pass
807 os.unlink(lockpath) 807 if inst.startswith('unlink:'):
808 lockpath = inst[7:]
809 os.unlink(lockpath)
810 elif inst != 'none':
811 raise error.Abort(_('invalid value for --daemon-postexec'))
808 util.hidewindow() 812 util.hidewindow()
809 sys.stdout.flush() 813 sys.stdout.flush()
810 sys.stderr.flush() 814 sys.stderr.flush()
811 815
812 nullfd = os.open(os.devnull, os.O_RDWR) 816 nullfd = os.open(os.devnull, os.O_RDWR)