mirror of
https://github.com/facebook/sapling.git
synced 2025-01-04 03:06:30 +03:00
catch TERM signal in command processor
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 catch TERM signal in command processor This keeps kill from interrupting a transaction without cleanup. manifest hash: c50091696a3396dfed5c3168bd9e0d94c457a04b -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCniLNywK+sNU5EO8RAvepAKCCnEX7vPheIyOu2IvV6dDahdFMWACeMih6 E2R3rA/MGACxG9HpSNH6lak= =HR1s -----END PGP SIGNATURE-----
This commit is contained in:
parent
f1f83067d7
commit
dd6fb288d8
@ -1,4 +1,4 @@
|
|||||||
import os, re, traceback, sys
|
import os, re, traceback, sys, signal
|
||||||
from mercurial import fancyopts, ui, hg
|
from mercurial import fancyopts, ui, hg
|
||||||
|
|
||||||
class UnknownCommand(Exception): pass
|
class UnknownCommand(Exception): pass
|
||||||
@ -159,6 +159,11 @@ def find(cmd):
|
|||||||
|
|
||||||
raise UnknownCommand(cmd)
|
raise UnknownCommand(cmd)
|
||||||
|
|
||||||
|
class SignalInterrupt(Exception): pass
|
||||||
|
|
||||||
|
def catchterm(*args):
|
||||||
|
raise SignalInterrupt
|
||||||
|
|
||||||
def dispatch(args):
|
def dispatch(args):
|
||||||
options = {}
|
options = {}
|
||||||
opts = [('v', 'verbose', None, 'verbose'),
|
opts = [('v', 'verbose', None, 'verbose'),
|
||||||
@ -181,6 +186,8 @@ def dispatch(args):
|
|||||||
# deal with unfound commands later
|
# deal with unfound commands later
|
||||||
i = find(cmd)
|
i = find(cmd)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGTERM, catchterm)
|
||||||
|
|
||||||
cmdoptions = {}
|
cmdoptions = {}
|
||||||
args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2])
|
args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2])
|
||||||
|
|
||||||
@ -192,6 +199,8 @@ def dispatch(args):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
d()
|
d()
|
||||||
|
except SignalInterrupt:
|
||||||
|
u.warn("killed!\n")
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
u.warn("interrupted!\n")
|
u.warn("interrupted!\n")
|
||||||
except TypeError, inst:
|
except TypeError, inst:
|
||||||
|
Loading…
Reference in New Issue
Block a user