builtin-merge: release the lockfile in try_merge_strategy()

Once we committed the locked index, we should release the lockfile. In
most cases this is done automatically when the process ends, but this is
not true in this case.

[jc: with additional tests from Eric Raible]

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Miklos Vajna 2008-09-06 18:29:49 +02:00 committed by Junio C Hamano
parent a6f63ae002
commit 4271666046
2 changed files with 23 additions and 0 deletions

View file

@ -576,6 +576,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
(write_cache(index_fd, active_cache, active_nr) ||
commit_locked_index(lock)))
die ("unable to write %s", get_index_file());
rollback_lock_file(lock);
return clean ? 0 : 1;
} else {
args = xmalloc((4 + commit_list_count(common) +

View file

@ -142,4 +142,26 @@ test_expect_success 'custom merge backend' '
rm -f $o $a $b
'
test_expect_success 'up-to-date merge without common ancestor' '
test_create_repo repo1 &&
test_create_repo repo2 &&
test_tick &&
(
cd repo1 &&
>a &&
git add a &&
git commit -m initial
) &&
test_tick &&
(
cd repo2 &&
git commit --allow-empty -m initial
) &&
test_tick &&
(
cd repo1 &&
git pull ../repo2 master
)
'
test_done