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

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

From
Josh Steadmon <steadmon@google.com>
Date
Oct 22, 2018, 21:47 UTC
Message-ID
<20181022214756.GC233961@google.com>
In-Reply-To
<20181019235945.GB7326@sigill.intra.peff.net>
On 2018.10.19 19:59, Jeff King wrote:
Show 27 quoted lines
> On Fri, Oct 19, 2018 at 04:19:28PM -0700, steadmon@google.com wrote:
> 
> > 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.
Done.
> Does this work with configured archiver extensions, too? I think so,
> because we load them via init_tar_archiver().

If you mean things like .tgz and .tar.gz, then yes, they are affected by the bug as well, and this patch fixes them. The test included in v2 uses a .tgz file.

> 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?
Done.
> 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).
Done.
> Other than those minor points (and the lack of test), your fix looks
> good to me.
Thanks for the review!
Previous: Junio C HamanoNext: Jeff King
Message 5 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.