Am Montag, den 04.02.2013, 12:18 +0100 schrieb Michael J Gruber: > Sitaram has said much about the Unix philosophy already, and Konstantin > gave a variant of checkout. Just two more cents: > > How would you copy a directory tree? I presume you wouldn't use "tar c . > | tar -xC gothere", but what would be your worklflow? > > Depending on what you actually want to achieve, "git clone -b branch" > and removing the superfluous .git-dir might be a viable option. (Beware > the hardlinks, though.) > > Michael The specific workflow I am planning is this: I have a server that hosts a bare git repository. This git repository contains a branch production. Whenever somebody pushes to production a hook automatically puts a copy of the current production branch into /var/www/foo. I could of course use pull for that but it just does not feels right. Why should I have a repository twice on the server? Adding an option to put the tree of an arbitrary revision into a directory is something that improves usability as it is an operation semantically different from tar. Saying that you can already get this with git archive and ad-hoc unpacking is as saying: You don't need cp. Just tar the file and untar it somewhere else. Of course that is a possibility but it does not not feel right and is not intuitive. Adding this feature won't cause feature creep but would rather add an operation that makes sense in some scenarios and reduces the dependencies on other commands that might not be available on other platforms (If you care about that). Also, this functionality is in full accordance with the Unix principle as it is a basic operation ("put tree into files") and not something super special. Also, it always feels like a hack if you do this ad-hoc unpacking. Like "git can't do it the simple way". Yours, Robert Clausecker