Re: [RFC/PATCH] Fix path prefixing in grep_object
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 26, 2013, 17:03 UTC
- Message-ID
- <xmqqioysidu1.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <xmqqr4dgifp5.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 13 quoted lines
> If your justification were "above says 'there may be a readon why
> the user wanted to ask it in that way', i.e. 'find in this tree
> object HEAD:some/path and report where hits appear', but the reason
> can only be from laziness and/or broken script and the user always
> wants the answer from within the top-level tree-ish", then that
> argument may make some sense. You need to justify why it is OK to
> lose information in the answer by rewriting the colon that separates
> the question ("in this tree object") and the answer ("at this path
> relative to the tree object given").
>
> Whether you rewrite the input or the output is not important; you
> are trying to give an answer to a different question, which is what
> I find questionable.For example, one of the cases the proposed change will break that I am worried about is a script that wants to take N trees and a pattern, and report where in the given trees hits appear, something like:
git grep -c -e $pattern "$@" |
perl -e '
my @trees = @ARGV;
my %found = ();
while (<>) {
my $line = $_;
for (@trees) {
my $tree_prefix = $_ . ":";
my $len = len($tree_prefix);
if (substr($line, 0, $len) eq $tree_prefix) {
my ($path_count) = substr($line, $len);
my ($path, $count) = $path_count =~ /^(.*):(\d+)$/
$found{$tree} = [$path, $count];
}
}
}
# Do stats on %found
' "$@"