Replies: 2 comments 3 replies
-
yes, the local working copy which the Git backend uses is at most a local maxima, since it walks the whole repository on every command.
There are no definite plans for a watchman replacement but the project at some point would like to have some VFS for itself since it can be specialized for its use-cases.
This and the respective Discord are the best place to discuss |
Beta Was this translation helpful? Give feedback.
-
|
If the repository has lots of merges, the default
(2) can be mitigated by indexing changed paths (see |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
-
I've been playing around with jj for side projects but I've decided to try using it in anger by switching to it for my work. I quickly ran into some performance issues and I have some questions.
First, here's the size of the repo I'm working with in a few different dimensions:
So I'd consider it medium-sized: much larger than a typical open-source project, but much smaller than the largest git repos out there.
Out of the box, here is how long various operations take in a fresh jj/git clone of this repo. (All timings here are the means reported by hyperfine, and I'm running this on a laptop with an Intel Core Ultra 7 155H.)
jj statusjj status --ignore-working-copyjj log -r 'all()' -n 5jj log -r 'all()' -n 5 --ignore-working-copygit statusgit log -n 5I did some reading and found out about fsmonitor and watchman. I installed Watchman and added
fsmonitor.backend = "watchman"and then:jj statusjj status --ignore-working-copyjj log -r 'all()' -n 5jj log -r 'all()' -n 5 --ignore-working-copyOverall, I expect these kinds of everday vcs interactions to be instant. <50 ms for git feels instant. ~100 ms with
--ignore-working-copyor ~170 ms with watchman have a noticeable delay. ~300 ms for jj without watchman or--ignore-working-copyfeels like a distinct pause.So some questions:
--ignore-working-copya lot for speed? I read the documentation for it injj help statusbut I'm not sure I understand all the implications. I can set up some short aliases for things likejj status --ignore-working-copybut I'm not sure if this is a bad idea, or at least not the "jj-ish" way.Also a separate question about Watchman: is the idea to use watchman as the fsmonitor "backend" indefinitely, or does jj plan to implement its own watcher at some point (a la git's fsmonitor)? I found installing Watchman to be very painful (unlike jj) so the idea of needing to rely on it doesn't give me warm fuzzies.
Finally: is there a mailing list for jj that I somehow missed, or is this the best/only place to have discussions about it?
Thanks for any feedback!
Beta Was this translation helpful? Give feedback.
All reactions