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

[PATCH v2 00/14] Improve git-status --ignored

From
Karsten Blees <karsten.blees@gmail.com>
Date
Apr 15, 2013, 19:04 UTC
Message-ID
<516C4F27.30203@gmail.com>
In-Reply-To
<514778E4.1040607@gmail.com>

This patch series addresses several bugs and performance issues in .gitignore processing.

Patches #1 - #6 fix bugs and add appropriate test cases.

Patch #7 changes handling of "ignored tracked" directories, as I discovered that with the current bahavior git-clean can delete tracked content.

Patches #8 - #14 are performance optimizations.

Also available here: https://github.com/kblees/git/tree/kb/improve-git-status-ignored-v2 git pull git://github.com/kblees/git.git kb/improve-git-status-ignored-v2

Changes since v1 (old#->new#: description):

1->1: dir.c: git-status --ignored: don't drop ignored directories 2->2: dir.c: git-status --ignored: don't list files in ignored directories 3->3: dir.c: git-status --ignored: don't list empty ignored directories

*->4: dir.c: git-ls-files --directories: don't hide empty directories
      - new bugfix
4->5: dir.c: git-status --ignored: don't list empty directories as ignored
      - fixed typo in commit message thanks to Eric Sunshine
      - patch is reduced to a one-liner (the DIR_HIDE_EMPTY_DIRECTORIES
        flag has already been fixed in patch 4, renaming the variable and
	tweaking DIR_SHOW_OTHER_DIRECTORIES is not strictly necessary)
*->6: dir.c: make 'git-status --ignored' work within leading directories
      - new bugfix
*->7: dir.c: git-clean -d -X: don't delete tracked directories
      - changes handling of "ignored tracked" directories
5->8: dir.c: factor out parts of last_exclude_matching for later reuse
5->9: dir.c: move prep_exclude
      - split in two patches for cleaner diff
      - removed unnecessary ';' after '}'
6->10: dir.c: unify is_excluded and is_path_excluded APIs
       - fixed another typo in commit message

7->11: dir.c: replace is_path_excluded with now equivalent is_excluded API 8->12: dir.c: git-status: avoid is_excluded checks for tracked files

*->13: dir.c: git-status --ignored: don't scan the work tree three times
       - new optimization
*->14: dir.c: git-status --ignored: don't scan the work tree twice
       - new optimization
Karsten Blees (14):
  dir.c: git-status --ignored: don't drop ignored directories
  dir.c: git-status --ignored: don't list files in ignored directories
  dir.c: git-status --ignored: don't list empty ignored directories
  dir.c: git-ls-files --directories: don't hide empty directories
  dir.c: git-status --ignored: don't list empty directories as ignored
  dir.c: make 'git-status --ignored' work within leading directories
  dir.c: git-clean -d -X: don't delete tracked directories
  dir.c: factor out parts of last_exclude_matching for later reuse
  dir.c: move prep_exclude
  dir.c: unify is_excluded and is_path_excluded APIs
  dir.c: replace is_path_excluded with now equivalent is_excluded API
  dir.c: git-status: avoid is_excluded checks for tracked files
  dir.c: git-status --ignored: don't scan the work tree three times
  dir.c: git-status --ignored: don't scan the work tree twice
 Documentation/technical/api-directory-listing.txt |  25 +-
 builtin/add.c                                     |   5 +-
 builtin/check-ignore.c                            |   7 +-
 builtin/ls-files.c                                |  15 +-
 dir.c                                             | 499 +++++++++-------------
 dir.h                                             |  25 +-
 t/t3001-ls-files-others-exclude.sh                |  49 +++
 t/t7061-wtstatus-ignore.sh                        | 125 +++++-
 t/t7300-clean.sh                                  |  34 ++
 unpack-trees.c                                    |  10 +-
 unpack-trees.h                                    |   1 -
 wt-status.c                                       |  24 +-
 12 files changed, 455 insertions(+), 364 deletions(-)
Previous: Duy NguyenNext: Karsten Blees
Message 7 of 36 in “Improve git-status --ignored”
  1. 0/8 Improve git-status --ignoredKarsten Blees, Mar 18, 2013
  2. Junio C HamanoMar 19, 2013
  3. Duy NguyenMar 19, 2013
  4. Karsten BleesMar 19, 2013
  5. Junio C HamanoMar 19, 2013
  6. Duy NguyenMar 19, 2013
  7. 00/14 Improve git-status --ignoredKarsten Blees, Apr 15, 2013
  8. 01/14 dir.c: git-status --ignored: don't drop ignored directoriesKarsten Blees, Apr 15, 2013
  9. Ramkumar RamachandraApr 16, 2013
  10. Karsten BleesApr 17, 2013
  11. 02/14 dir.c: git-status --ignored: don't list files in ignored directoriesKarsten Blees, Apr 15, 2013
  12. read_revisions_from_stdin: make copies for handle_revision_argThomas Rast, Apr 16, 2013
  13. Junio C HamanoApr 16, 2013
  14. 03/14 dir.c: git-status --ignored: don't list empty ignored directoriesKarsten Blees, Apr 15, 2013
  15. Ramkumar RamachandraApr 16, 2013
  16. Karsten BleesApr 17, 2013
  17. 04/14 dir.c: git-ls-files --directories: don't hide empty directoriesKarsten Blees, Apr 15, 2013
  18. 05/14 dir.c: git-status --ignored: don't list empty directories as ignoredKarsten Blees, Apr 15, 2013
  19. 06/14 dir.c: make 'git-status --ignored' work within leading directoriesKarsten Blees, Apr 15, 2013
  20. 07/14 dir.c: git-clean -d -X: don't delete tracked directoriesKarsten Blees, Apr 15, 2013
  21. 08/14 dir.c: factor out parts of last_exclude_matching for later reuseKarsten Blees, Apr 15, 2013
  22. 09/14 dir.c: move prep_excludeKarsten Blees, Apr 15, 2013
  23. 10/14 dir.c: unify is_excluded and is_path_excluded APIsKarsten Blees, Apr 15, 2013
  24. Junio C HamanoApr 15, 2013
  25. 11/14 dir.c: replace is_path_excluded with now equivalent is_excluded APIKarsten Blees, Apr 15, 2013
  26. 12/14 dir.c: git-status: avoid is_excluded checks for tracked filesKarsten Blees, Apr 15, 2013
  27. 13/14 dir.c: git-status --ignored: don't scan the work tree three timesKarsten Blees, Apr 15, 2013
  28. 14/14 dir.c: git-status --ignored: don't scan the work tree twiceKarsten Blees, Apr 15, 2013
  29. Junio C HamanoApr 15, 2013
  30. Junio C HamanoApr 15, 2013
  31. Karsten BleesApr 15, 2013
  32. Junio C HamanoApr 15, 2013
  33. Karsten BleesApr 17, 2013
  34. Junio C HamanoApr 17, 2013
  35. 11/14 dir.c: replace is_path_excluded with now equivalent is_excluded APIKarsten Blees, Apr 17, 2013
  36. 14/14 dir.c: git-status --ignored: don't scan the work tree twiceKarsten Blees, Apr 17, 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.