]> git.scripts.mit.edu Git - git.git/commitdiff
transport-helper: pass --signed-tags=warn-strip to fast-export
authorJohn Keeping <john@keeping.me.uk>
Sun, 14 Apr 2013 10:57:07 +0000 (11:57 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Apr 2013 16:03:16 +0000 (09:03 -0700)
Currently, attempting to push a signed tag to a remote helper which uses
fast-export results in the remote helper failing because the default
fast-export action for signed tags is "abort".  This is not helpful for
users because there is no way to pass additional arguments to
fast-export here, either from the remote helper or from the command
line.

In general, the signature will be invalidated by whatever transformation
a remote helper performs on a tag to push it to a repository in a
different format so the correct behaviour is to strip the tag.  Doing
this silently may surprise people, so use "warn-strip" to issue a
warning when a signed tag is encountered.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5801-remote-helpers.sh
transport-helper.c

index f387027c05cf502c6892c7694598bef34376be92..9b287db650ae8042d7da3be2331a95e94421032d 100755 (executable)
@@ -6,6 +6,7 @@
 test_description='Test remote-helper import and export commands'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-gpg.sh
 
 if ! type "${BASH-bash}" >/dev/null 2>&1; then
        skip_all='skipping remote-testgit tests, bash not available'
@@ -166,4 +167,13 @@ test_expect_success 'push ref with existing object' '
        compare_refs local dup server dup
 '
 
+test_expect_success GPG 'push signed tag' '
+       (cd local &&
+       git checkout master &&
+       git tag -s -m signed-tag signed-tag &&
+       git push origin signed-tag
+       ) &&
+       compare_refs local signed-tag^{} server signed-tag^{}
+'
+
 test_done
index dcd8d97411dd15e01ba1480a44b2a998043b424a..3ce825989e893d8cf805d8630f091aafc00e4cf4 100644 (file)
@@ -410,9 +410,10 @@ static int get_exporter(struct transport *transport,
        /* we need to duplicate helper->in because we want to use it after
         * fastexport is done with it. */
        fastexport->out = dup(helper->in);
-       fastexport->argv = xcalloc(5 + revlist_args->nr, sizeof(*fastexport->argv));
+       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";
        if (data->export_marks)
                fastexport->argv[argc++] = data->export_marks;
        if (data->import_marks)