Subject: Re: [PATCH] git-archive: document CWD effect

From: Andy Parkins <[email-masked]>
Date: Mon, 9 Apr 2007 21:37:21 +0100

On Monday 2007, April 09, René Scharfe wrote:

> I agree with (1) and (3), meaning that we are free to change the
> behaviour.  I don't agree with (2), though.  I'd find it strange if
> changing the working directory wouldn't change the archive contents.
>
> We should keep consistency with the rest of git here.  Since
> git-archive is just a fancy git-ls-tree, I think we should mirror its
> behaviour with respect to the working directory.  (Which is what the
> current code does. Modulo bugs, of course.)

I don't agree with the supposition that git-archive is a fancy 
git-ls-tree.  If it were, then you'd be right.  It's not though.  It's 
more like a git-read-tree or git-checkout-index; those both don't care 
where you are in the working tree.

Argument 1)
git-archive should have nothing to do with a working tree in fact; it's 
perfectly reasonable to expect that it would work in a bare repository 
in fact - that's almost the definition of a command that shouldn't be 
working directory aware.

Argument 2)
Consider the --remote option.  What "working path" should be relevant 
when "--remote" is passed?  For consistency, git-archive should always 
refer to the repository root.

Argument 3)
git-archive is similar to other VCS's "export" command; and for those 
the export command in it's default form will work without a local 
checkout and they export from the repository root.

Argument 4)
What if the repository has multiple root commits, similar to git's html 
and todo branches.  Now, use git-archive and reference one of those 
commits.  The working directory you're in now has no relevance at all 
to the commit your targeting - it need not even exist.  The same 
problem exists of course if you are now in a directory that didn't 
exist in the past.

Andy
-- 
Dr Andy Parkins, M Eng (hons), MIET
[email-masked]