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

[PATCH 0/6] "ls-files -i" not honoring directory wide ignore

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 6, 2012, 05:45 UTC
Message-ID
<1338961519-30970-1-git-send-email-gitster@pobox.com>

"git ls-files --exclude=t -i" does not list anything, even though it ought to report all the paths that are tracked in the t/ directory.

This is because the command used excluded() API incorrectly. The API is designed to be called by callers that walk the tree structure from the top level, checking each and every level as it descends, and stop descending into a directory that is known to be ignored, but the caller just passed a full path of a tracked file without checking its higher level components and asked "Is this ignored?".

This series introduces a new path_excluded() API to be used for such callers based on the excluded() API. Also converted to use this new API are two other callers of the excluded(), namely "git checkout" and "git add -n --ignore-missing", that shared the same issue.

The third patch is more or less an "Oops, the earlier one was not ideal" fix-up patch, but as the earlier parts of the series is already in "next", I'll leave it as-is for now. It probably is necessary to squash it into the earlier patches post 1.7.11 after the "next" branch is rewound.

Junio C Hamano (6):
  ls-files -i: pay attention to exclusion of leading paths
  ls-files -i: micro-optimize path_excluded()
  path_excluded(): update API to less cache-entry centric
  builtin/add.c: use path_excluded()
  unpack-trees.c: use path_excluded() in check_ok_to_remove()
  dir.c: make excluded() file scope static
 builtin/add.c      |  6 +++++-
 builtin/ls-files.c | 23 +++++++++++++++------
 dir.c              | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 dir.h              | 18 +++++++++++++++-
 unpack-trees.c     | 11 +++++++++-
 unpack-trees.h     |  1 +
 6 files changed, 109 insertions(+), 10 deletions(-)
-- 
1.7.11.rc1.37.g09843ac
Next: Junio C Hamano
Message 1 of 7 in “"ls-files -i" not honoring directory wide ignore”
  1. 0/6 "ls-files -i" not honoring directory wide ignoreJunio C Hamano, Jun 6, 2012
  2. 1/6 ls-files -i: pay attention to exclusion of leading pathsJunio C Hamano, Jun 6, 2012
  3. 2/6 ls-files -i: micro-optimize path_excluded()Junio C Hamano, Jun 6, 2012
  4. 3/6 path_excluded(): update API to less cache-entry centricJunio C Hamano, Jun 6, 2012
  5. 4/6 builtin/add.c: use path_excluded()Junio C Hamano, Jun 6, 2012
  6. 5/6 unpack-trees.c: use path_excluded() in check_ok_to_remove()Junio C Hamano, Jun 6, 2012
  7. 6/6 dir.c: make excluded() file scope staticJunio C Hamano, Jun 6, 2012

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.