summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Johnsen <chris_johnsen@pobox.com>2009-03-07 03:30:51 -0600
committerJunio C Hamano <gitster@pobox.com>2009-03-07 12:21:45 -0800
commit0d66e95903a5c2567baa61cc7299ce865abe41b1 (patch)
tree26c62d92b9306e50411587229c561b6f2d7f26c2
parentdcc901bc2926f92558a854430570123b4152451d (diff)
downloadgit-0d66e95903a5c2567baa61cc7299ce865abe41b1.tar.gz
builtin-revert.c: release index lock when cherry-picking an empty commit
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>
-rw-r--r--builtin-revert.c1
-rwxr-xr-xt/t3505-cherry-pick-empty.sh33
2 files changed, 34 insertions, 0 deletions
diff --git a/builtin-revert.c b/builtin-revert.c
index d48313c745..09d08fa3e3 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -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
index 0000000000..9aaeabd972
--- /dev/null
+++ b/t/t3505-cherry-pick-empty.sh
@@ -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