Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

Re: git-archive and tar options

From: René Scharfe <hidden>
Date: 2016-06-15 22:51:36

Am 15.07.2011 01:30, schrieb Junio C Hamano:
Jeff King [off-list ref] writes:
quoted
quoted
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é
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help