зеркало из https://github.com/microsoft/git.git
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:
Родитель
c16570c42a
Коммит
ad5fa3cc0e
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче