Merge branch 'jc/merge-ff-only-stronger-than-signed-merge' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 13 Feb 2012 19:42:11 +0000 (11:42 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Feb 2012 19:42:11 +0000 (11:42 -0800)
* jc/merge-ff-only-stronger-than-signed-merge:
merge: do not create a signed tag merge under --ff-only option

builtin/merge.c
t/t7600-merge.sh
index 3a451727d0e637ae197c9a1193435e57e84e6c58..b4fbc60e6d25157ed022ebd3f2bc8a2aeb774b0c 100644 (file)
@@ -1283,7 +1283,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                            sha1_to_hex(commit->object.sha1));
                setenv(buf.buf, argv[i], 1);
                strbuf_reset(&buf);
-               if (merge_remote_util(commit) &&
+               if (!fast_forward_only &&
+                   merge_remote_util(commit) &&
                    merge_remote_util(commit)->obj &&
                    merge_remote_util(commit)->obj->type == OBJ_TAG) {
                        option_edit = 1;
index 5d8c428543bd61a27489af72045b4e1816d240e9..a598dfa4777a8d459fd6e68b9a63c77d87e47c24 100755 (executable)
@@ -27,6 +27,7 @@ Testing basic merge operations/option parsing.
 '
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-gpg.sh
 
 printf '%s\n' 1 2 3 4 5 6 7 8 9 >file
 printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >file.1
@@ -670,4 +671,16 @@ test_expect_success 'merge --no-ff --edit' '
        test_cmp actual expected
 '
 
+test_expect_success GPG 'merge --ff-only tag' '
+       git reset --hard c0 &&
+       git commit --allow-empty -m "A newer commit" &&
+       git tag -s -m "A newer commit" signed &&
+       git reset --hard c0 &&
+
+       git merge --ff-only signed &&
+       git rev-parse signed^0 >expect &&
+       git rev-parse HEAD >actual &&
+       test_cmp actual expect
+'
+
 test_done