summaryrefslogtreecommitdiff
path: root/t/t3505-cherry-pick-empty.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-05-29 17:14:41 -0700
committerJunio C Hamano <gitster@pobox.com>2012-05-29 17:14:41 -0700
commitac2b0e8fb77d02f480af3f45a44cb9ea611008a4 (patch)
tree0ee737307cb61cc33383246e2f4eae025778f4e4 /t/t3505-cherry-pick-empty.sh
parent4b580061b350ae9d27ab7c3936a45828a33624c6 (diff)
downloadgit-ac2b0e8fb77d02f480af3f45a44cb9ea611008a4.tar.gz
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 92f00cdf84..5a1340cee6 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