builtin-revert.c: release index lock when cherry-picking an empty commit
authorChris Johnsen <chris_johnsen@pobox.com>
Sat, 7 Mar 2009 09:30:51 +0000 (03:30 -0600)
committerJunio C Hamano <gitster@pobox.com>
Sat, 7 Mar 2009 20:21:45 +0000 (12:21 -0800)
When a cherry-pick of an empty commit is done, release the lock
held on the index.

The fix is the same as was applied to similar code in 4271666046.

Signed-off-by: Chris Johnsen <chris_johnsen@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-revert.c
t/t3505-cherry-pick-empty.sh [new file with mode: 0755]
index d48313c7453c24e7ab4cbb3e024d05ec311edf7b..09d08fa3e3dd45b3bbb1ded4776da6bfb546a43d 100644 (file)
@@ -387,6 +387,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
            (write_cache(index_fd, active_cache, active_nr) ||
             commit_locked_index(&index_lock)))
                die("%s: Unable to write new index file", me);
+       rollback_lock_file(&index_lock);
 
        if (!clean) {
                add_to_msg("\nConflicts:\n\n");
diff --git a/t/t3505-cherry-pick-empty.sh b/t/t3505-cherry-pick-empty.sh
new file mode 100755 (executable)
index 0000000..9aaeabd
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+test_description='test cherry-picking an empty commit'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+       echo first > file1 &&
+       git add file1 &&
+       test_tick &&
+       git commit -m "first" &&
+
+       git checkout -b empty-branch &&
+       test_tick &&
+       git commit --allow-empty -m "empty"
+
+'
+
+test_expect_code 1 'cherry-pick an empty commit' '
+
+       git checkout master &&
+       git cherry-pick empty-branch
+
+'
+
+test_expect_success 'index lockfile was removed' '
+
+       test ! -f .git/index.lock
+
+'
+
+test_done