summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-03-14 12:01:03 -0700
committerJunio C Hamano <gitster@pobox.com>2018-03-14 12:01:03 -0700
commit787aa97f217eb97827205271daba6d95c80b9049 (patch)
tree5050330a38146d8ea2c39ef67852f69c08e2abe1 /merge-recursive.c
parent868f7d23384931641aa4901aab27f3f23577e63b (diff)
parent350292a1efb38bbcd6255a424df6adbfe78910ac (diff)
Merge branch 'ma/roll-back-lockfiles'
Some codepaths used to take a lockfile and did not roll it back; they are automatically rolled back at program exit, so there is no real "breakage", but it still is a good practice to roll back when you are done with a lockfile. * ma/roll-back-lockfiles: sequencer: do not roll back lockfile unnecessarily merge: always roll back lock in `checkout_fast_forward()` merge-recursive: always roll back lock in `merge_recursive_generic()` sequencer: always roll back lock in `do_recursive_merge()` sequencer: make lockfiles non-static
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 6ff971f9a2..129577987b 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -2218,12 +2218,15 @@ int merge_recursive_generic(struct merge_options *o,
hold_locked_index(&lock, LOCK_DIE_ON_ERROR);
clean = merge_recursive(o, head_commit, next_commit, ca,
result);
- if (clean < 0)
+ if (clean < 0) {
+ rollback_lock_file(&lock);
return clean;
+ }
if (active_cache_changed &&
write_locked_index(&the_index, &lock, COMMIT_LOCK))
return err(o, _("Unable to write index."));
+ rollback_lock_file(&lock);
return clean ? 0 : 1;
}