On Sat, 13 Aug 2005, Dave Jones wrote:
>
> My git snapshot creator that builds the hourly tarballs at
> http://www.codemonkey.org.uk/projects/git-snapshots/
> currently does an rsync, and then a checkout, and finally
> it cleans up by removing all the checked out files.
> It currently does this by hand, but on learning about
> this 'new' command, I thought, cool, now I can do..
> 
> git-ls-files | xargs rm -rf
> 
> however, this then leaves a bunch of empty subdirs, as
> git-ls-files doesn't list the subdirs by themselves in
> the output.  Am I missing some other option ?

Nope, you're not missing anything, except that you shouldn't do that.

"git-ls-files" is very nice for things like

        git-ls-files | xargs grep ....

but your example is not one of them. Not without options, and not _with_
strange options.

Your example is an example of just not doing it the right way.

If you really want a temporary tree, what you do is something like

        git-checkout-cache --prefix=tmp-dir/ -f -a

and when you're done, you just do

        rm -rf tmp-dir

and you're done.

NOTE NOTE NOTE! In the above, the order of the parameters is really really 
important! "-a" takes effect when it is seen, so it needs to be last. 
Also, the "--prefix" thing really _really_ needs the slash at the end, 
because it's literally used to prefix the pathname.

HOWEVER, if all you want to do is just a tar-file, then there's a better 
solution. It's called

        snap=git-snapshot-$(date +"%Y%m%d")
        git-tar-tree HEAD $snap | gzip -9 > $snap.tar.gz

which is even easier, and a hell of a lot more efficient.

Git actually has a _lot_ of nifty tools. I didn't realize that people 
didn't know about such basic stuff as "git-tar-tree" and "git-ls-files". 

                Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to