mirror of
https://github.com/git/git.git
synced 2024-11-28 12:34:08 +08:00
a933c23e66
If HEAD doesn't point at anything during the initial check, then we should make sure that it *still* doesn't point at anything when we are ready to update the reference. Otherwise, another process might commit while we are working (e.g., while we are waiting for the user to edit the commit message) and we will silently overwrite it. This fixes a failing test in t7516. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
31 lines
852 B
Bash
Executable File
31 lines
852 B
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git commit races'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'race to create orphan commit' '
|
|
write_script hare-editor <<-\EOF &&
|
|
git commit --allow-empty -m hare
|
|
EOF
|
|
test_must_fail env EDITOR=./hare-editor git commit --allow-empty -m tortoise -e &&
|
|
git show -s --pretty=format:%s >subject &&
|
|
grep hare subject &&
|
|
test -z "$(git show -s --pretty=format:%P)"
|
|
'
|
|
|
|
test_expect_success 'race to create non-orphan commit' '
|
|
write_script airplane-editor <<-\EOF &&
|
|
git commit --allow-empty -m airplane
|
|
EOF
|
|
git checkout --orphan branch &&
|
|
git commit --allow-empty -m base &&
|
|
git rev-parse HEAD >base &&
|
|
test_must_fail env EDITOR=./airplane-editor git commit --allow-empty -m ship -e &&
|
|
git show -s --pretty=format:%s >subject &&
|
|
grep airplane subject &&
|
|
git rev-parse HEAD^ >parent &&
|
|
test_cmp base parent
|
|
'
|
|
|
|
test_done
|