git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH] Fix path prefixing in grep_object

From
Phil Hord <phil.hord@gmail.com>
Date
Aug 26, 2013, 17:19 UTC
Message-ID
<CABURp0oTsyG-FCgAzYZjtwwP_VMudV0=_Z5eOe+qbhPbmPqx4g@mail.gmail.com>
In-Reply-To
<xmqqioysidu1.fsf@gitster.dls.corp.google.com>
On Mon, Aug 26, 2013 at 1:03 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 40 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> 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
> ' "$@"
>

I do understand there is potential breakage when a script is parsing the output. I did not consider that this was a feature someone may want; it really only looks like a breakage to me, for the reasons I've already given.

It's surprising just how broken it looks to me (given that I now know it is not) since all the other filenames output from 'git-grep -l' are valid filenames or object references. There is only this one tree-path instance which does not. I suppose I will learn to live with it.

Previous: Junio C HamanoNext: Jeff King
Message 16 of 19 in “Fix path prefixing in grep_object”
  1. Fix path prefixing in grep_objectPhil Hord, Aug 25, 2013
  2. Phil HordAug 25, 2013
  3. Junio C HamanoAug 25, 2013
  4. Jonathan NiederAug 25, 2013
  5. Junio C HamanoAug 25, 2013
  6. Junio C HamanoAug 26, 2013
  7. Phil HordAug 26, 2013
  8. Junio C HamanoAug 26, 2013
  9. Phil HordAug 26, 2013
  10. Phil HordAug 26, 2013
  11. Junio C HamanoAug 26, 2013
  12. Phil HordAug 26, 2013
  13. Junio C HamanoAug 27, 2013
  14. Phil HordAug 27, 2013
  15. Junio C HamanoAug 26, 2013
  16. Phil HordAug 26, 2013
  17. Jeff KingAug 25, 2013
  18. Jonathan NiederAug 25, 2013
  19. Jeff KingAug 25, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.