credential-cache: new option to ignore sighup

Introduce new option "credentialCache.ignoreSIGHUP" which stops
git-credential-cache--daemon from quitting on SIGHUP.  This is useful
when "git push" is started from Emacs, because all child
processes (including the daemon) will receive a SIGHUP when "git push"
exits.

Signed-off-by: Noam Postavsky <npostavs@users.sourceforge.net>
Signed-off-by: Jeff King <peff@peff.net>
This commit is contained in:
Noam Postavsky 2015-11-09 19:26:29 -05:00 committed by Jeff King
parent 0c83680e9c
commit 7f4d4746c1
2 changed files with 10 additions and 0 deletions

View File

@ -1122,6 +1122,9 @@ credential.<url>.*::
example.com. See linkgit:gitcredentials[7] for details on how URLs are
matched.
credentialCache.ignoreSIGHUP::
Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
include::diff-config.txt[]
difftool.<tool>.path::

View File

@ -244,6 +244,7 @@ static void check_socket_directory(const char *path)
int main(int argc, const char **argv)
{
const char *socket_path;
int ignore_sighup = 0;
static const char *usage[] = {
"git-credential-cache--daemon [opts] <socket_path>",
NULL
@ -255,6 +256,8 @@ int main(int argc, const char **argv)
OPT_END()
};
git_config_get_bool("credentialcache.ignoresighup", &ignore_sighup);
argc = parse_options(argc, argv, NULL, options, usage, 0);
socket_path = argv[0];
@ -263,6 +266,10 @@ int main(int argc, const char **argv)
check_socket_directory(socket_path);
register_tempfile(&socket_file, socket_path);
if (ignore_sighup)
signal(SIGHUP, SIG_IGN);
serve_cache(socket_path, debug);
delete_tempfile(&socket_file);