Re: status letters consistency in log and ls-files

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: status letters consistency in log and ls-files

From: Leo Razoumov <hidden>
Date: 2016-06-15 22:45:24

On 9/26/08, Jeff King [off-list ref] wrote:
On Fri, Sep 26, 2008 at 07:24:11PM -0400, Leo Razoumov wrote:

 > Another script takes output of
 >   git ls-files -v -c -d -m -o -k
 > and for each file pulls together all the file status letters in one record.


OK. I was thinking I could suggest just using "git diff" here instead.
 E.g.,:

  git diff --name-status

 will show you the modified and deleted files. But since you are using
 "-c" to show _all_ cached files, I think only ls-files can do that
 (since diff is, obviously, about files with differences).

 So I'm not sure there is a straight-forward solution short of
 translating the status codes.

 -Peff
Moreover, git diff would not show untracked files while git ls-files
will include them and label '?'

--Leo--

Re: status letters consistency in log and ls-files

From: Jeff King <hidden>
Date: 2016-06-15 22:45:24

On Fri, Sep 26, 2008 at 11:20:03PM -0400, Leo Razoumov wrote:
quoted
  git diff --name-status

 will show you the modified and deleted files. But since you are using
 "-c" to show _all_ cached files, I think only ls-files can do that
 (since diff is, obviously, about files with differences).
Moreover, git diff would not show untracked files while git ls-files
will include them and label '?'
Yes, but that is somewhat simpler to fix, since we know that they cannot
be part of the "git diff" output. That is, you can just append the "git
ls-files -v -o" output. Actually, since cached files use the 'H' tag
which doesn't conflict with git-diff, and since your goal was to combine
the multiple output anyway, I wonder if something like this would make
you happy:

  (
    git ls-files --exclude-standard -v -c -o &&
    git diff --name-status --cached
  ) |
  perl -e '
    my %h;
    while(<>) {
      chomp;
      my ($status, $name) = split / /, $_, 2;
      $h{$name} .= $status;
    }
    print "$h{$_} $_\n" foreach sort keys(%h);
  '

?

Personally, I find listing every cached file makes the output hard to
read, since any modified ones will be lost in the noise. But that is
what you said you wanted...

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help