[wishlist] git-archive -L
- From
- Pierre Habouzit <madcoder@madism.org>
- Date
- Feb 2, 2009, 14:34 UTC
- Message-ID
- <20090202143425.GA30667@artemis.corp>
Hi Rene,
I wanted to do that myself, but I sadly miss the time right now, so I wonder if you'd know how to do the following.
We have in our repository a kind of modular system (for a family of web sites) where each web-site uses a (versionned) symlink farm. IOW it works basically that way:
www/module1
www/module2
product_A/www/module1 -> ../../www/module1
product_A/www/module_A
product_B/www/module1 -> ../../www/module1
product_B/www/module2 -> ../../www/module2
product_B/www/module_BThough product_A and _B even if they share a fair amount of code, are separate products and when we release, we'd like to be able to perform from inside:
git archive --format=tar -L product_$A
where -L basically does what it does in cp: dereference symlinks. To make the thing hairier, we also have symlinks _inside_ www/ (pointing into the same subtree) that we'd like to keep if possible (even if it's not a big deal).
So I'd suggest something where -L only dereferences the symlink if it goes outside of the list of paths passed to git-archive, and -LL (or -L -L) dereferences anything. Of course this would only make sense if the symlinks resolve to something that is tracked :)
For now we git archive the whole repository, use tar xh; rm what we don't like, reset the symlinks we want to keep, and retar, which is kind of counterproductive :)
-- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org