diff options
| author | Junio C Hamano <gitster@pobox.com> | 2018-03-14 12:01:03 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2018-03-14 12:01:03 -0700 |
| commit | 787aa97f217eb97827205271daba6d95c80b9049 (patch) | |
| tree | 5050330a38146d8ea2c39ef67852f69c08e2abe1 /merge.c | |
| parent | 868f7d23384931641aa4901aab27f3f23577e63b (diff) | |
| parent | 350292a1efb38bbcd6255a424df6adbfe78910ac (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.c')
| -rw-r--r-- | merge.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -113,17 +113,23 @@ int checkout_fast_forward(const struct object_id *head, setup_unpack_trees_porcelain(&opts, "merge"); trees[nr_trees] = parse_tree_indirect(head); - if (!trees[nr_trees++]) + if (!trees[nr_trees++]) { + rollback_lock_file(&lock_file); return -1; + } trees[nr_trees] = parse_tree_indirect(remote); - if (!trees[nr_trees++]) + if (!trees[nr_trees++]) { + rollback_lock_file(&lock_file); return -1; + } for (i = 0; i < nr_trees; i++) { parse_tree(trees[i]); init_tree_desc(t+i, trees[i]->buffer, trees[i]->size); } - if (unpack_trees(nr_trees, t, &opts)) + if (unpack_trees(nr_trees, t, &opts)) { + rollback_lock_file(&lock_file); return -1; + } if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK)) return error(_("unable to write new index file")); return 0; |
