On Thu, Jun 30, 2016 at 7:55 PM, Ben Peart <peartben@xxxxxxxxx> wrote: > David Turner <novalis <at> novalis.org> writes: > >> >> Hiding watchman behind index-helper means you need both daemons. You >> can't run watchman alone. Not so good. But on the other hand, 'git' >> binary is not linked to watchman/json libraries, which is good for >> packaging. Core git package will run fine without watchman-related >> packages. If they need watchman, they can install git-index-helper and >> dependencies. >> > > Have you considered splitting index-helper and watchman apart? Using > Watchman to not lstat unchanged entries is a huge perf win with very > large repos. On large repos (i.e. lots of files/dirs on worktree), the cost of reading index will increase proportionally. Yes lstat costs, but I suspect index reading (integrity verification actually) may cost more, especially on platforms with cheap lstat like linux. On these repos you really want to enable all four: index-helper (with watchman), split-index (I still need to work out pruning on split-index) and untracked cache. There's still a lot more to make git run fast on large repos though. > It would also be interesting to make the Watchman backend replaceable by > using an extensible API. This has the benefit of not having to link the > 'git' binary to the watchman/json libraries. 'git' binary is not linked to watchman libraries. git-index-helper is a separate binary, by design. In theory you can create a 'git-index-helper' replacement binary with something other than watchman. I think David documented the protocol well (it may change in the future though and we are not prepared for capability progression) > Is there any pattern already in git for accomplishing this? -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html