aseipp 7 days ago

To be clear, Jujutsu is not "porcelain" in the (somewhat archaic) Git sense of "high level tools built on low level tools". We do not share any code with the git project. Jujutsu uses Git as a storage layer, i.e. the direct on disk representation. The algorithms and user interface are all completely written from scratch, on top of this.

You could also write e.g. a Mercurial backend to Jujutsu and it would operate similarly, but using revlog storage vs Git's content addressed store.

> JJ uses the git binary

That's a relatively recent phenomenon. The git binary is used only to fetch and push objects. Previously we used libgit2. Why do this? Because replicating all of git and OpenSSH's feature support for every little random auth flow/crypto algorithm/hardware token/whatever is a battle that can't be won. It's ultimately smarter to just have an uglier interface between the two parts (invoking a command line vs using an API) to make the end-user experience significantly better.

When working with Git objects, jj uses the Gitoxide rust library to natively manage the Git store and upstream Git is not used at all.

1
andrewaylett 5 days ago

Ah, I'd misunderstood how much the git binary was used for. I think I might go with could be a porcelain, if you don't mind? It's far too late for me to edit my comment now.

I'm a smidge late to the "early adopters" party, but I've been using Jujitsu intensively for a couple of weeks now and do not intend to stop :).