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

[PATCH v2 00/15] index-helper, watchman

From
David Turner <dturner@twopensource.com>
Date
Mar 19, 2016, 01:04 UTC
Message-ID
<1458349490-1704-1-git-send-email-dturner@twopensource.com>
In this version:

I removed the statistics since they're not really a core part of the series and we can always add them later.

I added a little more testing.

I merged the untracked cache/watchman mashup into the relevant patches. Hopefully I didn't screw it up -- I got into the rebase weeds here and took a while to get out. I wish I were better at rebasing.

I moved the index-helper to a named-pipe based IPC mechanism instead of a signal-based one. I don't actualy know much about named pipes other than what I learned while writing this, so someone with clue should probably take a peek.

The index-helper pid files was kind of a hassle -- there was a lot of mechanism involved in making sure that they were in fact pointing to a live index-helper process. With named pipes, we don't really need them: if a live index-helper is running, it can simply be instructed to die, and if it's not, then the pipe can be safely removed and a new index-helper started.

Because there is no longer a pid file for index-helper, index-helper has no way to let git know that it should wait for a watchman update reply when poked. I worked around this by making the waiting configurable, and giving a sensible default. Note that in the no-watchman case, the wait will be short even if misconfigured, because the daemon can immediately send an "OK" message.

I updated some commit messages, following Junio and Duy's suggestions.

Johannes Schindelin said that he would work on the Windows side, so I've dropped the Windows bits (including one patch). Since I don't know anything about Windows, it's probably for the best that I'm not coding for it.

I eliminated the ability to start up an index-helper when there was already one running because I don't see why you would want to do that, and because it would lead to multiple readers on the same named pipe, which has undefined behavior. Just kill the old one if you're done with it.

David Turner (7):
  read-cache: invalidate untracked cache data when reading WAMA
  unpack-trees: preserve index extensions
  index-helper: kill mode
  index-helper: don't run if already running
  index-helper: autorun mode
  index-helper: optionally automatically run
  read-cache: config for waiting for index-helper
Nguyễn Thái Ngọc Duy (10):
  read-cache.c: fix constness of verify_hdr()
  read-cache: allow to keep mmap'd memory after reading
  index-helper: new daemon for caching index and related stuff
  index-helper: add --strict
  daemonize(): set a flag before exiting the main process
  index-helper: add --detach
  read-cache: add watchman 'WAMA' extension
  Add watchman support to reduce index refresh cost
  index-helper: use watchman to avoid refreshing index with lstat()
  update-index: enable/disable watchman support
 .gitignore                         |   1 +
 Documentation/git-index-helper.txt |  64 ++++++
 Makefile                           |  21 ++
 builtin/gc.c                       |   2 +-
 builtin/update-index.c             |  11 +
 cache.h                            |  18 +-
 config.c                           |  10 +
 config.mak.uname                   |   1 +
 configure.ac                       |   8 +
 daemon.c                           |   2 +-
 dir.c                              |  23 +-
 dir.h                              |   6 +
 environment.c                      |   8 +
 git-compat-util.h                  |   1 +
 git.c                              |  35 ++-
 index-helper.c                     | 439 +++++++++++++++++++++++++++++++++++
 read-cache.c                       | 455 +++++++++++++++++++++++++++++++++++--
 setup.c                            |   4 +-
 shm.c                              |  67 ++++++
 shm.h                              |  23 ++
 t/t7063-status-untracked-cache.sh  |  23 ++
 t/t7900-index-helper.sh            |  60 +++++
 t/test-lib-functions.sh            |   4 +
 unpack-trees.c                     |   1 +
 watchman-support.c                 | 134 +++++++++++
 watchman-support.h                 |   7 +
 26 files changed, 1406 insertions(+), 22 deletions(-)
 create mode 100644 Documentation/git-index-helper.txt
 create mode 100644 index-helper.c
 create mode 100644 shm.c
 create mode 100644 shm.h
 create mode 100755 t/t7900-index-helper.sh
 create mode 100644 watchman-support.c
 create mode 100644 watchman-support.h
-- 
2.4.2.767.g62658d5-twtrsrc
Next: David Turner
Message 1 of 25 in “index-helper, watchman”
  1. 00/15 index-helper, watchmanDavid Turner, Mar 19, 2016
  2. 01/17 read-cache.c: fix constness of verify_hdr()David Turner, Mar 19, 2016
  3. 02/17 read-cache: allow to keep mmap'd memory after readingDavid Turner, Mar 19, 2016
  4. 03/17 index-helper: new daemon for caching index and related stuffDavid Turner, Mar 19, 2016
  5. Duy NguyenMar 29, 2016
  6. David TurnerMar 29, 2016
  7. 04/17 index-helper: add --strictDavid Turner, Mar 19, 2016
  8. 05/17 daemonize(): set a flag before exiting the main processDavid Turner, Mar 19, 2016
  9. 06/17 index-helper: add --detachDavid Turner, Mar 19, 2016
  10. Duy NguyenMar 29, 2016
  11. 07/17 read-cache: add watchman 'WAMA' extensionDavid Turner, Mar 19, 2016
  12. 08/17 read-cache: invalidate untracked cache data when reading WAMADavid Turner, Mar 19, 2016
  13. Duy NguyenMar 29, 2016
  14. David TurnerMar 29, 2016
  15. 09/17 Add watchman support to reduce index refresh costDavid Turner, Mar 19, 2016
  16. Jeff HostetlerMar 24, 2016
  17. David TurnerMar 24, 2016
  18. 10/17 index-helper: use watchman to avoid refreshing index with lstat()David Turner, Mar 19, 2016
  19. 11/17 update-index: enable/disable watchman supportDavid Turner, Mar 19, 2016
  20. 12/17 unpack-trees: preserve index extensionsDavid Turner, Mar 19, 2016
  21. 13/17 index-helper: kill modeDavid Turner, Mar 19, 2016
  22. 14/17 index-helper: don't run if already runningDavid Turner, Mar 19, 2016
  23. 15/17 index-helper: autorun modeDavid Turner, Mar 19, 2016
  24. 16/17 index-helper: optionally automatically runDavid Turner, Mar 19, 2016
  25. 17/17 read-cache: config for waiting for index-helperDavid Turner, Mar 19, 2016

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.