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

Re: git-archive and tar options

From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
Date
Jul 15, 2011, 20:59 UTC
Message-ID
<4E20AA42.7000003@lsrfire.ath.cx>
In-Reply-To
<7vwrfk1lv3.fsf@alter.siamese.dyndns.org>
Am 15.07.2011 01:30, schrieb Junio C Hamano:
Show 23 quoted lines
> Jeff King <peff@peff.net> writes:
> 
>>> Why?
>>>
>>> The tree you are writing out that way look very different from what is
>>> recorded in the commit object. What's the point of introducing confusion
>>> by allowing many tarballs with different contents written from the same
>>> commits with such tweaks all labelled with the same pax header?
>>
>> See my later message. I think it depends on how the embedded id is used.
>> Is it to say "this represents the tree of this git commit"? Or is it to
>> help people who later have a tarball and have no clue which commit it
>> might have come from?
> 
> People, who have no clue which part of the subtree was extract and what
> leading path was added, would still have to wonder where the tree came
> from even with the embedded id. Without your patch, if the tarball has an
> embedded id, wouldn't they at least be able to assume it is the whole
> thing of that commit? If you label a randomly mutated tree with the same
> label, you cannot tell the genuine one from manipulated ones.
> 
> Not that I have strong opinions on this, either, but that is what I meant
> by "_introducing_" confusion.

When we started to write the ID into generated archives, there was only git-tar-tree and no <rev>:<path> syntax. It would write the ID only if it was given a commit and not if it got a tree or if the user started it from a subdirectory. The result was that only the full tree of a commit was branded with the commit ID.

Now we have git archive, a more flexible command line syntax all around, path limiting as well as attributes that can affect the contents of the files in the archive. Back then the commmit ID was sufficient as a concise and canonical label of the archive contents, but now things are a bit more complicated.

Which use cases are we aiming for? Do we want to include all of the command line arguments (with revs resolved to SHA1-IDs)? Only those that modify archive contents? And any applied attributes? Or do we want to get stricter and only write the commit ID if a full unchanged tree of a commit is being archived?

René
Previous: Junio C HamanoNext: Neal Kreitzinger
Message 11 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.