Until recently, there were no git clients for Plan 9. Upstream git is large, included perl and bash code, and used a large number of system calls that Plan 9 does not support. In addition, it does not feel good to use, with a bewildering array of inconsistent command line arguments and ad-hoc commands.
The file formats and wire formats for git make …interesting.. design choices, but they aren’t particularly hard to implement, so I followed the documentation and implemented them.
Now, we have a native Plan 9 git implementation. It presents read only access to scripts via a file system mounted on /mnt/git, and manipulates the repository directly. The ability to access the repository directly from the shell using standard tools gives this implementation a very plan9-y feel.
There’s more care given to a consistent and minimalist interface that supports the necessary functionality, which will hopefully lead to a more pleasant user experience. Commands like
checkout will not be overloaded with all functionality under the sun.
For an extra dose of irony, it’s currently hosted in mercurial, since that’s the current ‘native’ plan 9 version control system. Eventually, it will be developed using itself, but it needs to be beaten on more before I’m confident.