And now following up on myself
I know, I’m an ‘unusual’ user and always pushing it to the edges
Recently, I joined Keybase. They’ve been around for a while; my actual reason for joining was that one of the tech groups I follow uses Keybase as their chatroom — not necessarily because of its super-strong PGP encryption (they’re not paranoid enough for that), but rather because it comes for free with the Keybase app. Since Keybase works flawlessly with my current PGP setup — no need to create more PGP keys, etc., it just works with what I’ve got — I gave it a try, a few months ago.
Among many other goodies (such as offering encrypted folders for both private files as well as the ability to share them publicly — to anyone who has your public key to decrypt them), I found out that they even had a built-in Git server! It’s obviously not designed to replace GitHub or GitLab, of course, but it works quite well for my purposes, for small projects that I don’t intend to make public, and, if I do, I most certainly wish to benefit from fully encrypted authentication and access.
Keybase does a lot of interesting ‘magic’ at the OS level. In particular, it hooks on the git
command-line application so that it ‘understands’ keybase://
URLs for Git repositories (e.g. just as ‘standard’ Git understands https://
, ssh://
and git://
URLs). This, in turn, sets up whatever ‘magic’ is required at the communications layer to get git
to place its files in the encrypted Git repository. From the end user’s perspective, it’s completely transparent — you use the same tools as with any other kind of repository.
How exactly this works is really beyond my understanding — there are so many options to git
that it’s not impossible that hidden among them is a way to define one’s own transport mechanism — but obviously libgit2
is clueless about it. And I can understand why: there are limits to how fast you can keep up with all the ‘innovations’ brought in by the core Git development team (is Linus Torvalds still the head of that team?) and exactly replicate its functionality…
So here goes my suggestion. For most practical purposes, libgit2
does a reasonably good job, and it’s well-integrated into Nova. When I use any external tool to tinker with my Git setup — say, either launching git push
from the command line or using the GitHub app to do that (and get those precious diffs side by side…), whatever changes are made via these external tools are almost instantly ‘made known’ to Nova. In other words, I don’t know exactly how libgit2
works — if it gets automatically notified by macOS when a change happens, or if it just calls the equivalent of git status
every second or so, and checks if there were any changes — but the truth is that changes are reflected on Nova as close to real-time as possible. I have yet to see Nova failing to keep up with whatever is being done with Git outside Nova. That means I can focus mainly on remaining ‘inside’ Nova for 70% or so for the functionality I use, and manually type commands via the Git CLI or other tools to do whatever Nova cannot do via libgit2
. It can be a bit annoying, but things work quite well together…
Therefore, it would make little sense to ‘revert’ to a pre-Nova (i.e. Coda 2) way of dealing with the Git endpoints.
However, what might make some sense is to have an additional option for Git, namely, the ability to run an external command instead of using the built-in libgit2
. Ideally, of course, I’d like that to happen just for some projects (those that really require the extra functionality that libgit2
does not have), e.g. have a checkbox for ‘use built-in Git’ for each project.
I’m pretty sure that there is a good reason why Panic dropped support for an external Git tool (as well as getting rid of Subversion); and, in theory, this could be something done as a Nova extension (I understand that we could even add a sidebar which would replicate the built-in Git functionality) — but it would be a really wasteful exercise since so much work has been put in the current Git implementation (which is rather well done!).
Anyway, just some additional rambling from Yours Truly…