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

Re: [PATCH 1/1] archive: init archivers before determining format

From
Jeff King <peff@peff.net>
Date
Oct 19, 2018, 23:59 UTC
Message-ID
<20181019235945.GB7326@sigill.intra.peff.net>
In-Reply-To
<b1f8e288dde9a9dd46386524189da66c7ad2c333.1539990488.git.steadmon@google.com>
On Fri, Oct 19, 2018 at 04:19:28PM -0700, steadmon@google.com wrote:
Show 15 quoted lines
> diff --git a/builtin/archive.c b/builtin/archive.c
> index e74f675390..dd3283a247 100644
> --- a/builtin/archive.c
> +++ b/builtin/archive.c
> @@ -45,7 +45,10 @@ static int run_remote_archiver(int argc, const char **argv,
>  	 * it.
>  	 */
>  	if (name_hint) {
> -		const char *format = archive_format_from_filename(name_hint);
> +		const char *format;
> +		init_tar_archiver();
> +		init_zip_archiver();
> +		format = archive_format_from_filename(name_hint);
>  		if (format)
>  			packet_write_fmt(fd[1], "argument --format=%s\n", format);

Hrm. This code was added back in 56baa61d01 (archive: move file extension format-guessing lower, 2011-06-21), and your example invocation worked back then!

Unfortunately it was broken by the very next patch in the series, 08716b3c11 (archive: refactor file extension format-guessing, 2011-06-21). I guess that's what I get for not adding regression tests.

It's probably worth mentioning those points in the commit message.

Does this work with configured archiver extensions, too? I think so, because we load them via init_tar_archiver().

Can we avoid repeating the list of archivers here? This needs to stay in sync with the list in write_archive(). I know there are only two, but can we factor out an init_archivers() call or something?

We also should probably just call it unconditionally when we start the archiver command (I don't think there are any other bugs like this lurking, but it doesn't cost very much to initialize these; it makes sense to just do it early).

Other than those minor points (and the lack of test), your fix looks good to me.

-Peff
Previous: steadmon@google.comNext: Junio C Hamano
Message 3 of 20 in “Fix format detection when archiving remotely”
  1. 0/1 Fix format detection when archiving remotelysteadmon@google.com, Oct 19, 2018
  2. 1/1 archive: init archivers before determining formatsteadmon@google.com, Oct 19, 2018
  3. Jeff KingOct 19, 2018
  4. Junio C HamanoOct 22, 2018
  5. Josh SteadmonOct 22, 2018
  6. Jeff KingOct 22, 2018
  7. Jeff KingOct 19, 2018
  8. Josh SteadmonOct 22, 2018
  9. archive: initialize archivers earliersteadmon@google.com, Oct 22, 2018
  10. Jeff KingOct 22, 2018
  11. Josh SteadmonOct 22, 2018
  12. Jeff KingOct 23, 2018
  13. Josh SteadmonOct 23, 2018
  14. archive: initialize archivers earliersteadmon@google.com, Oct 22, 2018
  15. archive: initialize archivers earliersteadmon@google.com, Oct 23, 2018
  16. Junio C HamanoOct 23, 2018
  17. Josh SteadmonOct 25, 2018
  18. archive: initialize archivers earliersteadmon@google.com, Oct 25, 2018
  19. Jeff KingOct 25, 2018
  20. Junio C HamanoOct 26, 2018

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.