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

[PATCH v1 0/2] fsexcludes: Add programmatic way to exclude files

From
Ben Peart <ben.peart@microsoft.com>
Date
Apr 10, 2018, 21:04 UTC
Message-ID
<20180410210408.13788-1-benpeart@microsoft.com>

In git repos with large working directories an external file system monitor (like fsmonitor or gvfs) can track what files in the working directory have been modified. This information can be used to speed up git operations that scale based on the size of the working directory so that they become O(# of modified files) vs O(# of files in the working directory).

The fsmonitor patch series added logic to limit what files git had to stat() to the set of modified files provided by the fsmonitor hook proc. It also used the untracked cache (if enabled) to limit the files/folders git had to scan looking for new/untracked files. GVFS is another external file system model that also speeds up git working directory based operations that has been using a different mechanism (programmatically generating an excludes file) to enable git to be O(# of modified files).

This patch series will introduce a new way to limit git�s traversal of the working directory that does not require the untracked cache (fsmonitor) or using the excludes feature (GVFS). It does this by enhancing the existing excludes logic in dir.c to support a new �File System Excludes� or fsexcludes API that is better tuned to these programmatic applications.

Base Ref: master
Web-Diff: https://github.com/benpeart/git/commit/2ccbcd6360
Checkout: git fetch https://github.com/benpeart/git fsexcludes-v1 && git checkout 2ccbcd6360
Ben Peart (2):
  fsexcludes: add a programmatic way to exclude files from git's working
    directory traversal logic
  fsmonitor: switch to use new fsexcludes logic and remove unused
    untracked cache based logic
 Makefile                    |   1 +
 dir.c                       |  33 ++++--
 dir.h                       |   2 -
 fsexcludes.c                | 210 ++++++++++++++++++++++++++++++++++++
 fsexcludes.h                |  27 +++++
 fsmonitor.c                 |  21 +---
 fsmonitor.h                 |  10 +-
 t/t7519-status-fsmonitor.sh |  14 +--
 8 files changed, 270 insertions(+), 48 deletions(-)
 create mode 100644 fsexcludes.c
 create mode 100644 fsexcludes.h
base-commit: 0b0cc9f86731f894cff8dd25299a9b38c254569e
-- 
2.17.0.windows.1
Next: Ben Peart
Message 1 of 17 in “fsexcludes: Add programmatic way to exclude files”
  1. 0/2 fsexcludes: Add programmatic way to exclude filesBen Peart, Apr 10, 2018
  2. 2/2 fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logicBen Peart, Apr 10, 2018
  3. 1/2 fsexcludes: add a programmatic way to exclude files from git's working directory traversal logicBen Peart, Apr 10, 2018
  4. Martin ÅgrenApr 10, 2018
  5. Ben PeartApr 11, 2018
  6. Junio C HamanoApr 11, 2018
  7. 0/2 fsexcludes: Add programmatic way to exclude filesBen Peart, Apr 11, 2018
  8. 1/2 fsexcludes: add a programmatic way to exclude files from git's working directory traversal logicBen Peart, Apr 11, 2018
  9. Junio C HamanoApr 11, 2018
  10. Ben PeartApr 13, 2018
  11. 2/2 fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logicBen Peart, Apr 11, 2018
  12. 0/2 fsexcludes: Add programmatic way to exclude filesBen Peart, Apr 13, 2018
  13. 1/2 fsexcludes: add a programmatic way to exclude files from git's working directory traversal logicBen Peart, Apr 13, 2018
  14. 2/2 fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logicBen Peart, Apr 13, 2018
  15. Ben PeartApr 18, 2018
  16. Junio C HamanoApr 18, 2018
  17. Duy NguyenApr 14, 2018

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.