git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/3] transport-helper: pass --signed-tags=warn-strip to fast-export

From
John Keeping <john@keeping.me.uk>
Date
Apr 14, 2013, 10:57 UTC
Message-ID
<1d7cbf61d07f1f0490806f7516c622087ebed05d.1365936811.git.john@keeping.me.uk>
In-Reply-To
<cover.1365936811.git.john@keeping.me.uk>

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>
---
 t/t5801-remote-helpers.sh | 10 ++++++++++
 transport-helper.c        |  3 ++-
 2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh
index f387027..9b287db 100755
--- a/t/t5801-remote-helpers.sh
+++ b/t/t5801-remote-helpers.sh
@@ -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
diff --git a/transport-helper.c b/transport-helper.c
index dcd8d97..3ce8259 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -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)
-- 
1.8.2.694.ga76e9c3.dirty
Previous: Jonathan NiederNext: John Keeping
Message 13 of 14 in “Remote helpers and signed tags”
  1. John KeepingApr 7, 2013
  2. Jonathan NiederApr 7, 2013
  3. Sverre RabbelierApr 8, 2013
  4. 0/3 Handle signed tags with 'export' remote helpersJohn Keeping, Apr 14, 2013
  5. 1/3 fast-export: add --signed-tags=warn-strip modeJohn Keeping, Apr 14, 2013
  6. Sverre RabbelierApr 16, 2013
  7. Junio C HamanoApr 16, 2013
  8. Sverre RabbelierApr 16, 2013
  9. John KeepingApr 16, 2013
  10. Junio C HamanoApr 17, 2013
  11. Sverre RabbelierApr 17, 2013
  12. Jonathan NiederApr 16, 2013
  13. 2/3 transport-helper: pass --signed-tags=warn-strip to fast-exportJohn Keeping, Apr 14, 2013
  14. 3/3 transport-helper: add 'signed-tags' capabilityJohn Keeping, Apr 14, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.