2009/8/2 René Scharfe <rene.scharfe@xxxxxxxxxxxxxx>: > demerphq schrieb: >> 2009/7/30 René Scharfe <rene.scharfe@xxxxxxxxxxxxxx>: >>> 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/" -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html