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

Re: git-archive and tar options

From
Jeff King <peff@peff.net>
Date
Jul 14, 2011, 17:27 UTC
Message-ID
<20110714172718.GA21341@sigill.intra.peff.net>
In-Reply-To
<4E1F2468.6080409@lsrfire.ath.cx>
On Thu, Jul 14, 2011 at 07:16:24PM +0200, René Scharfe wrote:
Show 17 quoted lines
> >> git archive --format=tar -o my.tar --transform 
> >> 's,^Web/Templates/,myPath/myWeb/Templates/,' HEAD WebPortal/Templates/
> >> error: unknown option `transform'
> > 
> > Yeah, that won't work, because there is no such option. We do have
> > "--prefix", but I suspect that's not flexible enough for what you want.
> 
> If you only need a single subdirectory with a custom prefix you could do
> something like this (variables only used to keep the lines short):
> 
> 	$ subdir=WebPortal/Templates
> 	$ prefix=myPath/myWeb/Templates/
> 	$ (cd "$subdir" && git archive --prefix="$prefix" HEAD) >my.tar
> 
> The output file can be specified with -o as well, of course, but you'd
> either need to use an absolute path or add "../" for each directory
> level you descend into (-o ../../my.tar in this case).
Couldn't you also do:
  git archive --prefix=$prefix HEAD:$subdir >my.tar

? I guess that loses the pax header with the commit sha1 in it, though, because you are feeding a straight tree instead of a commit.

We didn't when git-archive was written, but these days we have get_sha1_with_context to remember incidental things about an object we look up. It should perhaps remember the commit (if any) we used to reach a treeish, and then the above command line could still insert the pax header.

-Peff
Previous: René ScharfeNext: René Scharfe
Message 4 of 22 in “git-archive and tar options”
  1. Neal KreitzingerJul 13, 2011
  2. Jeff KingJul 14, 2011
  3. René ScharfeJul 14, 2011
  4. Jeff KingJul 14, 2011
  5. René ScharfeJul 14, 2011
  6. Jeff KingJul 14, 2011
  7. Jakub NarebskiJul 14, 2011
  8. Junio C HamanoJul 14, 2011
  9. Jeff KingJul 14, 2011
  10. Junio C HamanoJul 14, 2011
  11. René ScharfeJul 15, 2011
  12. Neal KreitzingerJul 18, 2011
  13. René ScharfeJul 18, 2011
  14. Jakub NarebskiJul 14, 2011
  15. Neal KreitzingerJul 18, 2011
  16. René ScharfeJul 18, 2011
  17. Neal KreitzingerJul 19, 2011
  18. René ScharfeJul 19, 2011
  19. Neal KreitzingerJul 21, 2011
  20. Neal KreitzingerJul 21, 2011
  21. Andreas SchwabJul 14, 2011
  22. Sylvain RabotJul 19, 2011

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.