If the merge does not have anything to do, it does not unlock the index, causing any further index operations to fail. Thus, always unlock the index regardless of outcome. Signed-off-by: Joel Teichroeb <joel@xxxxxxxxxxxxx> --- merge-recursive.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/merge-recursive.c b/merge-recursive.c index ae5238d82c..16bb5512ef 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -2145,9 +2145,12 @@ int merge_recursive_generic(struct merge_options *o, if (clean < 0) return clean; - if (active_cache_changed && - write_locked_index(&the_index, lock, COMMIT_LOCK)) - return err(o, _("Unable to write index.")); + if (active_cache_changed) { + if (write_locked_index(&the_index, lock, COMMIT_LOCK)) + return err(o, _("Unable to write index.")); + } else { + rollback_lock_file(lock); + } return clean ? 0 : 1; } -- 2.13.0