Re: Adding files to a git-archive when it is generated, and whats the best way to find out what branch a commit is on?
- From
- demerphq <demerphq@gmail.com>
- Date
- Aug 2, 2009, 14:19 UTC
- Message-ID
- <9b18b3110908020719h79cf4872p9f284346cd6a185b@mail.gmail.com>
- In-Reply-To
- <4A759A21.7070806@lsrfire.ath.cx>
2009/8/2 René Scharfe <rene.scharfe@lsrfire.ath.cx>:
Show 39 quoted lines
> demerphq schrieb: >> 2009/7/30 René Scharfe <rene.scharfe@lsrfire.ath.cx>: >>> demerphq schrieb: >>>> So then git also would benefit from support in git-archive for adding >>>> arbitrary files to the archive during generation? >>> Yes, and this has come up before. >>> >>> How about the following? It's missing documentation and a test case, >>> but you could try >>> >>> $ git archive --add-file extra HEAD >HEAD+extra.tar >>> >>> or >>> >>> $ git archive --prefix=a/ --add-file extra --prefix=b/ HEAD >ba.tar >>> >>> Only the file name part (after the last slash) of the extra file is used, >>> together with the prefix, to form the path of the archive entry. >>> >>> Opening the extra files when parsing the command line arguments and closing >>> them after they have been written into the archive is a bit iffy, but it's >>> impractical to report open errors after parts of the archive have already >>> been created. >> >> I havent managed to try it out yet but this is pretty much exactly >> what I was looking for. Only thought I had was that it might be nice >> to be able to specify what name the file should be added as so that >> you can add files to subpaths deeper than the root/root prefix of the >> tar. However for /my/ particular purposes that is unnecessary, it only >> occurs to me as a nice to have. But if you were inclined to think >> about extending it I was thinking an argument notation like --add-file >> foo:bar/baz/bop might be useful. > > With the patch as-is, you can make a file named bop appear as > bar/baz/bop in the archive (by using a prefix of bar/baz/), but not as > foo. I wonder how often one needs to rename a file while adding it to > the archive -- or indeed if this is needed at all. Being lazy, I'd wait > for such a case to appear before supporting it with a double-valued > command line argument.
Well I was kinda thinking the case of a snapshot generator on something like gitweb.
In that case you could have multiple processes trying to create the same snapshot.
One solution is to do the work in a process specific temporary directory with the correct name and then add it that way.
A slightly nicer approach is create the file in a common working directory with a temporary name and then have it added to the archive with a different name. This is actually the approach I used by exploiting the the --transform option to tar. So while it might appear my request is a YAGNI it is actually a IADNI (I Already Did Need It).
Even nicer and cleaner of course would be support something like "--add-file -=.patch" with the "-" meaning "read from STDIN", which then means temporary files can be avoided, assuming one only needs to add a single file to the archive. This is particularly nice if the content of the file can be generated from the output of something like git-describe or git rev-parse or any generic tool.
So IMO actually this functionality would be very useful, and isnt so weird when you think of it in context of generating snapshots for a "git aware" build process.
Of course this is all very easy for me to say as a back-seat driver. :-)
cheers, Yves
-- perl -Mre=debug -e "/just|another|perl|hacker/"