rollback lock files on more signals than just SIGINT

Other signals are also common, for example SIGTERM and SIGHUP.
This patch modifies the lock file mechanism to catch more signals.
It also modifies http-push.c which was missing SIGTERM.

Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Paolo Bonzini 2008-05-29 16:55:53 +02:00 коммит произвёл Junio C Hamano
Родитель c16570c42a
Коммит ad5fa3cc0e
3 изменённых файлов: 18 добавлений и 0 удалений

Просмотреть файл

@ -2277,6 +2277,7 @@ int main(int argc, char **argv)
signal(SIGINT, remove_locks_on_signal);
signal(SIGHUP, remove_locks_on_signal);
signal(SIGQUIT, remove_locks_on_signal);
signal(SIGTERM, remove_locks_on_signal);
/* Check whether the remote has server info files */
remote->can_update_info_refs = 0;

Просмотреть файл

@ -135,6 +135,9 @@ static int lock_file(struct lock_file *lk, const char *path)
if (0 <= lk->fd) {
if (!lock_file_list) {
signal(SIGINT, remove_lock_file_on_signal);
signal(SIGHUP, remove_lock_file_on_signal);
signal(SIGTERM, remove_lock_file_on_signal);
signal(SIGQUIT, remove_lock_file_on_signal);
atexit(remove_lock_file);
}
lk->owner = getpid();

Просмотреть файл

@ -212,4 +212,18 @@ test_expect_success 'do not fire editor in the presence of conflicts' '
test "`cat .git/result`" = "editor not started"
'
pwd=`pwd`
cat > .git/FAKE_EDITOR << EOF
#! /bin/sh
# kill -TERM command added below.
EOF
test_expect_success 'a SIGTERM should break locks' '
echo >>negative &&
sh -c '\''
echo kill -TERM $$ >> .git/FAKE_EDITOR
GIT_EDITOR=.git/FAKE_EDITOR exec git commit -a'\'' && exit 1 # should fail
! test -f .git/index.lock
'
test_done