diff options
-rw-r--r-- | Documentation/gitremote-helpers.txt | 4 | ||||
-rwxr-xr-x | git-remote-testgit | 1 | ||||
-rwxr-xr-x | t/t5801-remote-helpers.sh | 12 | ||||
-rw-r--r-- | transport-helper.c | 6 |
4 files changed, 21 insertions, 2 deletions
diff --git a/Documentation/gitremote-helpers.txt b/Documentation/gitremote-helpers.txt index f506031ae..da746419b 100644 --- a/Documentation/gitremote-helpers.txt +++ b/Documentation/gitremote-helpers.txt @@ -202,6 +202,10 @@ capability then it should advertise `refspec *:*`. marks specified in <file> before processing any input. For details, read up on '--import-marks=<file>' in linkgit:git-fast-export[1]. +'signed-tags':: + This modifies the 'export' capability, instructing Git to pass + '--signed-tags=verbatim' to linkgit:git-fast-export[1]. In the + absence of this capability, Git will use '--signed-tags=warn-strip'. diff --git a/git-remote-testgit b/git-remote-testgit index b395c8de5..e7ed3a33e 100755 --- a/git-remote-testgit +++ b/git-remote-testgit @@ -38,6 +38,7 @@ do echo "*import-marks $gitmarks" echo "*export-marks $gitmarks" fi + test -n "$GIT_REMOTE_TESTGIT_SIGNED_TAGS" && echo "signed-tags" echo ;; list) diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh index 9b287db65..69212cdde 100755 --- a/t/t5801-remote-helpers.sh +++ b/t/t5801-remote-helpers.sh @@ -173,7 +173,17 @@ test_expect_success GPG 'push signed tag' ' git tag -s -m signed-tag signed-tag && git push origin signed-tag ) && - compare_refs local signed-tag^{} server signed-tag^{} + compare_refs local signed-tag^{} server signed-tag^{} && + test_must_fail compare_refs local signed-tag server signed-tag +' + +test_expect_success GPG 'push signed tag with signed-tags capability' ' + (cd local && + git checkout master && + git tag -s -m signed-tag signed-tag-2 && + GIT_REMOTE_TESTGIT_SIGNED_TAGS=1 git push origin signed-tag-2 + ) && + compare_refs local signed-tag-2 server signed-tag-2 ' test_done diff --git a/transport-helper.c b/transport-helper.c index 3ce825989..5f8d075ed 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -25,6 +25,7 @@ struct helper_data { option : 1, push : 1, connect : 1, + signed_tags : 1, no_disconnect_req : 1; char *export_marks; char *import_marks; @@ -191,6 +192,8 @@ static struct child_process *get_helper(struct transport *transport) refspecs[refspec_nr++] = xstrdup(capname + strlen("refspec ")); } else if (!strcmp(capname, "connect")) { data->connect = 1; + } else if (!strcmp(capname, "signed-tags")) { + data->signed_tags = 1; } else if (!prefixcmp(capname, "export-marks ")) { struct strbuf arg = STRBUF_INIT; strbuf_addstr(&arg, "--export-marks="); @@ -413,7 +416,8 @@ static int get_exporter(struct transport *transport, fastexport->argv = xcalloc(6 + revlist_args->nr, sizeof(*fastexport->argv)); fastexport->argv[argc++] = "fast-export"; fastexport->argv[argc++] = "--use-done-feature"; - fastexport->argv[argc++] = "--signed-tags=warn-strip"; + fastexport->argv[argc++] = data->signed_tags ? + "--signed-tags=verbatim" : "--signed-tags=warn-strip"; if (data->export_marks) fastexport->argv[argc++] = data->export_marks; if (data->import_marks) |