summaryrefslogtreecommitdiff
path: root/t/t3505-cherry-pick-empty.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-05-30 00:14:41 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-05-30 00:14:41 (GMT)
commitac2b0e8fb77d02f480af3f45a44cb9ea611008a4 (patch)
tree0ee737307cb61cc33383246e2f4eae025778f4e4 /t/t3505-cherry-pick-empty.sh
parent4b580061b350ae9d27ab7c3936a45828a33624c6 (diff)
downloadgit-ac2b0e8fb77d02f480af3f45a44cb9ea611008a4.zip
git-ac2b0e8fb77d02f480af3f45a44cb9ea611008a4.tar.gz
git-ac2b0e8fb77d02f480af3f45a44cb9ea611008a4.tar.bz2
cherry-pick: regression fix for empty commits
The earlier "--keep-redundant-commit" series broke "cherry-pick" that is given a commit whose change is already in the current history. Such a cherry-pick would result in an empty change, and should stop with an error, telling the user that conflict resolution may have made the result empty (which is exactly what is happening), but we silently dropped the change on the floor without any message nor non-zero exit code. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3505-cherry-pick-empty.sh')
-rwxr-xr-xt/t3505-cherry-pick-empty.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/t/t3505-cherry-pick-empty.sh b/t/t3505-cherry-pick-empty.sh
index 92f00cd..5a1340c 100755
--- a/t/t3505-cherry-pick-empty.sh
+++ b/t/t3505-cherry-pick-empty.sh
@@ -71,4 +71,34 @@ test_expect_success 'cherry pick with --keep-redundant-commits' '
git cherry-pick --keep-redundant-commits HEAD^
'
+test_expect_success 'cherry-pick a commit that becomes no-op (prep)' '
+ git checkout master &&
+ git branch fork &&
+ echo foo >file2 &&
+ git add file2 &&
+ test_tick &&
+ git commit -m "add file2 on master" &&
+
+ git checkout fork &&
+ echo foo >file2 &&
+ git add file2 &&
+ test_tick &&
+ git commit -m "add file2 on the side"
+'
+
+test_expect_success 'cherry-pick a no-op without --keep-redundant' '
+ git reset --hard &&
+ git checkout fork^0 &&
+ test_must_fail git cherry-pick master
+'
+
+test_expect_success 'cherry-pick a no-op with --keep-redundant' '
+ git reset --hard &&
+ git checkout fork^0 &&
+ git cherry-pick --keep-redundant-commits master &&
+ git show -s --format='%s' >actual &&
+ echo "add file2 on master" >expect &&
+ test_cmp expect actual
+'
+
test_done