Browse Source

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>
maint
Miklos Vajna 17 years ago committed by Junio C Hamano
parent
commit
4271666046
  1. 1
      builtin-merge.c
  2. 22
      t/t6026-merge-attr.sh

1
builtin-merge.c

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

22
t/t6026-merge-attr.sh

@ -142,4 +142,26 @@ test_expect_success 'custom merge backend' '
rm -f $o $a $b 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 test_done

Loading…
Cancel
Save