From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: Brodie Rao <brodie@sf.io>
Cc: "Jeff King" <peff@peff.net>, "Junio C Hamano" <gitster@pobox.com>,
"Nguyễn Thái Ngọc" <pclouds@gmail.com>,
git@vger.kernel.org
Subject: Re: [PATCH] archive: fix archive generation for empty trees
Date: Fri, 09 Mar 2012 08:30:14 +0100 [thread overview]
Message-ID: <4F59B186.5080600@lsrfire.ath.cx> (raw)
In-Reply-To: <CAJjwD-2=pEfk2WQ2=cKy8eUSwbx8y86jEo_kyiQWsxVTqVFQEg@mail.gmail.com>
Am 09.03.2012 01:06, schrieb Brodie Rao:
> 2012/3/7 Jeff King<peff@peff.net>:
>> On Wed, Mar 07, 2012 at 10:38:07PM -0800, Junio C Hamano wrote:
>>
>>>> ... However, prefix_pathspec does a lot of magic parsing;
>>>> it's unclear to me whether this is all in support of properly
>>>> adding the prefix, or if its side effects are important.
>>>
>>> These "magic" are for things like :(root)/path that will explicitly
>>> refuse the prefix when run from a subdirectory.
>>
>> Yeah, that was my impression. In that case, I would think we could get
>> rid of the get_pathspec call entirely, as it is purely about fixing-up
>> prefixes, and we know that we have none.
>
> Let me see if I've got this right: We're currently passing in ""/NULL
> to get_pathspec() because we handle the prefix beforehand in
> parse_treeish_args(). Once we get the tree object, every path is
> relative to it, so we don't need to continue using a prefix.
>
> Wouldn't it be better to continue using get_pathspec(), passing it the
> real prefix, and looking up tree entries relative to the top-level
> tree? The way it works now, you get weird behavior like this:
>
> $ cd xdiff
> $ git archive -v --format=tar HEAD ../t/t5000-tar-tree.sh> /dev/null
> fatal: '../t/t5000-tar-tree.sh' is outside repository
> $ git archive -v --format=tar HEAD ..> /dev/null
> fatal: '..' is outside repository
With get_pathspec() gone you'd get this instead:
fatal: path not found: ..
The message could be improved by mentioning the subdirectory and perhaps
the tree, something like this:
fatal: path not found in subdir 'xdiff' of 'HEAD': ..
However, you seem to expect such an invocation to succeed. What should
go into the created archive in that case and which pathes would be recorded?
René
next prev parent reply other threads:[~2012-03-09 7:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-08 0:09 [PATCH] archive: fix archive generation for empty trees Brodie Rao
2012-03-08 5:55 ` Jeff King
2012-03-08 6:38 ` Junio C Hamano
2012-03-08 7:15 ` Jeff King
2012-03-08 17:46 ` René Scharfe
2012-03-09 0:06 ` Brodie Rao
2012-03-09 7:30 ` René Scharfe [this message]
2012-03-08 17:46 ` René Scharfe
2012-03-09 0:08 ` Brodie Rao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F59B186.5080600@lsrfire.ath.cx \
--to=rene.scharfe@lsrfire.ath.cx \
--cc=brodie@sf.io \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).