git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Michael J Gruber <git@drmicha.warpmail.net>
Cc: Jon Schewe <jpschewe@mtu.net>, spearce@spearce.org, git@vger.kernel.org
Subject: Re: Possible bug in git-completion.sh
Date: Fri, 8 Jan 2010 11:24:04 -0500	[thread overview]
Message-ID: <20100108162404.GA5799@coredump.intra.peff.net> (raw)
In-Reply-To: <4B4751EA.8060707@drmicha.warpmail.net>

On Fri, Jan 08, 2010 at 04:40:26PM +0100, Michael J Gruber wrote:

> Jon Schewe venit, vidit, dixit 08.01.2010 16:17:
> > If I create a directory "build" at the top of my git repository and then
> > add it to .gitignore, git behaves as expected and ignores the build
> > directory when checking status. Now git-completion.sh has some issues. I
> > have GIT_PS1_SHOWUNTRACKEDFILES to "1", so that I will be notified when
> > there are untracked files in my working directory. When I'm in the
> > top-level directory my prompt looks like expected, no '%'. However if I
> > change to the build directory I get a '%', even though git status shows
> > no untracked files. I see that git-completion.sh is using git ls-files
> > to check this and that function does indeed show output when in my build
> > directory. So the question here: Is git-completion.sh using ls-files
> > improperly or is ls-files behaving improperly?
> > 
> 
> Neither, but: output between status and ls-files is inconsistent. More
> specifically, different commands behave differently with respect to the
> treatment of subdirs. ls-files assumes "." implicitly, status does not.
> "git status ." should give you the same behavior is "git ls-files" in
> this regard.

It doesn't, and I think there is a bug in ls-files.

Try this:

  git init
  touch base-cruft
  mkdir subdir
  touch subdir/cruft
  echo subdir >.gitignore
  git status ;# shows gitignore and base-cruft
  git ls-files -o --exclude-standard ;# ditto
  cd subdir
  git status . ;# shows nothing, since everything in subdir is ignored
  git ls-files -o --exclude-standard ;# BUG: shows cruft

Yes, ls-files operates in the subdirectory, which means it should not
show cruft from the root (and it does not). But it should respect
.gitignore directives going all the way back to the root, and it
doesn't.

-Peff

  reply	other threads:[~2010-01-08 16:24 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-08 15:17 Possible bug in git-completion.sh Jon Schewe
2010-01-08 15:40 ` Michael J Gruber
2010-01-08 16:24   ` Jeff King [this message]
2010-01-08 16:38     ` Junio C Hamano
2010-01-08 16:41       ` Jeff King
2010-01-08 16:45         ` Junio C Hamano
2010-01-08 16:56           ` Junio C Hamano
2010-01-08 17:24             ` Jeff King
2010-01-08 17:21           ` Jeff King
2010-01-08 18:21           ` Junio C Hamano
2010-01-08 19:58             ` Junio C Hamano
2010-01-08 23:01               ` [PATCH] ls-files: fix overeager pathspec optimization Junio C Hamano
2010-01-08 23:24                 ` Linus Torvalds
2010-01-08 23:31                   ` Junio C Hamano
2010-01-09  0:06                   ` Junio C Hamano
2010-01-09  0:24                     ` Linus Torvalds
2010-01-09  0:54                       ` Junio C Hamano
2010-01-09  1:07                         ` Linus Torvalds
2010-01-09  5:42                           ` Jeff King
2010-01-09  7:16                           ` Junio C Hamano
2010-01-09  7:35                             ` [PATCH 1/4] t3001: test ls-files -o ignored/dir Junio C Hamano
2010-01-09  7:35                               ` [PATCH 2/4] read_directory_recursive(): refactor handling of a single path into a separate function Junio C Hamano
2010-01-09  7:35                               ` [PATCH 3/4] read_directory(): further split treat_path() Junio C Hamano
2010-01-09  7:35                               ` [PATCH 4/4] ls-files: fix overeager pathspec optimization Junio C Hamano
2010-01-12 16:33                                 ` Jeff King
2010-01-09  8:07                             ` [PATCH] " Junio C Hamano
2010-01-09 18:05                               ` Linus Torvalds
2010-01-10  6:31                                 ` Junio C Hamano

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100108162404.GA5799@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=jpschewe@mtu.net \
    --cc=spearce@spearce.org \
    /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.
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 NNTP newsgroup(s).