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

[PATCH] archive-tar: report filter start error only once

From
René Scharfe <l.s.r@web.de>
Date
Oct 29, 2022, 10:06 UTC
Message-ID
<c51b72e5-1c32-65e4-6faa-04693b623e2e@web.de>

A missing tar filter is reported by start_command() using error(), but also by its caller, write_tar_filter_archive(), using die():

   $ git -c tar.invalid.command=foo archive --format=invalid HEAD
   error: cannot run foo: No such file or directory
   fatal: unable to start 'foo' filter: No such file or directory

The second message contains all relevant information and even says that the failed command was intended to be used as a filter. Silence the first one because it's redundant.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 archive-tar.c       | 1 +
 t/t5000-tar-tree.sh | 7 +++++++
 2 files changed, 8 insertions(+)
diff --git a/archive-tar.c b/archive-tar.c
index 3e4822b684..f8fad2946e 100644
--- a/archive-tar.c
+++ b/archive-tar.c
@@ -498,6 +498,7 @@ static int write_tar_filter_archive(const struct archiver *ar,
 	strvec_push(&filter.args, cmd.buf);
 	filter.use_shell = 1;
 	filter.in = -1;
+	filter.silent_exec_failure = 1;

 	if (start_command(&filter) < 0)
 		die_errno(_("unable to start '%s' filter"), cmd.buf);
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index eaa0b22ece..d473048138 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -342,6 +342,13 @@ test_expect_success 'only enabled filters are available remotely' '
 	test_cmp_bin remote.bar config.bar
 '

+test_expect_success 'invalid filter is reported only once' '
+	test_must_fail git -c tar.invalid.command= archive --format=invalid \
+		HEAD >out 2>err &&
+	test_must_be_empty out &&
+	test_line_count = 1 err
+'
+
 test_expect_success 'git archive --format=tgz' '
 	git archive --format=tgz HEAD >j.tgz
 '
--
2.30.2
Next: Taylor Blau
Message 1 of 2 in “archive-tar: report filter start error only once”
  1. archive-tar: report filter start error only onceRené Scharfe, Oct 29, 2022
  2. Taylor BlauOct 29, 2022

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.