Slow prompt in large git repos? speed up with lilgit

Hi all,

If you have git-status info in your prompt, you likely find large repos annoying. @colemickens kindly nerd-sniped me on Christmas Eve by pointing out gitstatusd (gitAndTools.gitstatus).

I’m a git-status minimalist, so I tried to out-perform gitstatus when I noticed how much detail it collects. This went far better than I imagined, and I’m excited to share lilgit now that its dependencies are in *-unstable channels.

Interested?


If you find it promising, I could use a little help improving the daemonization/IPC implementation. The MVP uses bash coproc for simplicity, but it has some downsides:

  • Currently limited to bash (but this isn’t intrinsic!)
  • It launches one lilgitd per terminal/shell for now. Rewriting the daemon in Rust improved memory use (~13 → 2.3MB /instance), but a multi-client daemon would further improve memory use.
  • Your terminal may nag about the active lilgitd process on close. In Terminal.app I add lilgitd to a list of running executables to ignore on close.
3 Likes

I’ve pushed an update today rewriting the Python ~daemon component in Rust. This:

  • brings a nice improvement to startup time
  • drops per-instance memory use from ~13MB → 2.3MB
  • further improves the speed when it can respond without shelling out to git

I’m hoping the increased performance means there are some places where it currently shells out that it can handle without doing so, but I haven’t played around with it yet.

2 Likes