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?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]