On Tue, 27 Aug 2019 at 12:15, Thomas Gummerer <t.gummerer@xxxxxxxxx> wrote: > struct lock_file lock = LOCK_INIT; > const char *head_arg = "HEAD"; > > - hold_locked_index(&lock, LOCK_DIE_ON_ERROR); > - refresh_cache(REFRESH_QUIET); > - if (write_locked_index(&the_index, &lock, > - COMMIT_LOCK | SKIP_IF_UNCHANGED)) > - return error(_("Unable to write index.")); > + if (refresh_and_write_cache(REFRESH_QUIET, COMMIT_LOCK | SKIP_IF_UNCHANGED) < 0) > + return -1; I wondered why you didn't drop the `struct lock_file`, but it turns out we still need it further down. > if (!strcmp(strategy, "recursive") || !strcmp(strategy, "subtree")) { > int clean, x; What you could do, I guess, is to move its declaration to around here. Probably not worth a re-roll. > @@ -860,13 +857,9 @@ static int merge_trivial(struct commit *head, struct commit_list *remoteheads) > { > struct object_id result_tree, result_commit; > struct commit_list *parents, **pptr = &parents; > - struct lock_file lock = LOCK_INIT; > > - hold_locked_index(&lock, LOCK_DIE_ON_ERROR); > - refresh_cache(REFRESH_QUIET); > - if (write_locked_index(&the_index, &lock, > - COMMIT_LOCK | SKIP_IF_UNCHANGED)) > - return error(_("Unable to write index.")); > + if (refresh_and_write_cache(REFRESH_QUIET, COMMIT_LOCK | SKIP_IF_UNCHANGED) < 0) > + return -1; Here you do drop the `struct lock_file` entirely, ok. Martin