GitRoot

craft your forge, build your project, grow your community freely

Version 0.2.0 is here

In this version, my main focus was on stabilization. I fixed over 14 issues, some of which were identified before version 0.1.0, but a significant proportion were reported by YOU. A big thanks to everyone who took part of it in any way.

Every time I shared gitroot, I came across new issues with the documentation and binaries, but also questions such as “how can I compile it?” or “what’s the next step?”. And I’m delighted to see your enthusiasm for it!

First contribution

Although all my new contributions were related to “bug fixes”, some of them required new features.

No notification == no contribution

The first amusing problem came from the first contributor! Fifteen days later, he contacted me to say, “Hi, I pushed a branch where I corrected a lot of typos, but… nothing has happened since I pushed it?”. In fact, I wasn’t actually aware that a new branch had been pushed. I had forgotten to implement a mechanism that would notify me whenever a new contribution is published!

A simple way to achieve this is to add an RSS feed (yes, I was inspired by Radicle for this feature). This is ideal, because all I have to do is add an “rss.xml” file to the web folder…and the current API of plugin 0.1.0 allows me to do this! So I created the pollen plugin. It takes all the commits from all branches and adds an rss:item to a page.

However, in order to achieve this, I opted to experiment with a different programming language (all the plugins are developed in Golang). I chose assemblyscript, which is a subset of the typescript language. So I added a new plugin sdk in typescript.

To follow all gitroot commits follow https://gitroot.dev/rss/all-commits.xml

Lot of bugs

During this first contribution, I discovered numerous bugs in the β€œgrafter” plugin. From the diff rendering to unwanted merging and very complicated final merging, nothing worked! Even the basic GitRoot features were painful to use :D

Let’s the show continue

No linux == no gitroot

Surprisingly, someone wanted to compile gitroot on a Mac. Well, gitroot is actually written in Go, so there’s no problem doing that… Except that I forgot to publish a fix I made to a dependency. Go couldn’t download the right dependency and therefore fails to compile completely… But everything is OK now! I added an automatic compilation for Mac, you can find this on the version page.

Doc, doc… doc?

After that, someone tried to run gitroot on their local computer, as described in the document. However, when version 0.1.0 was released, I discovered a bug. Gitroot cannot know where the root repository is located (because you can change its name). To fix this, I added a configuration file before initialization, which had to be passed on launch… It’s my fault, I forgot to update this tutorial.

A lot more

As you can see, there were many mistakes in the first version. However, they have all been fixed, and, of course, I have added plenty more to keep me busy for the next version!

More technicals bugs

But I also fixed several important issues that were the result of some shortcuts that every project has to take for publication. One was about a FS bug when directories were empty, another concerned the garbage collect plugin when the plugin had finished running, and many others.

Simplify plugin install

In the 0.1.0 version, to install a plugin you should download it, tell to gitroot where it is and then after push/pull activate/configure it. Now it is way more simple, just give an url, like https://gitroot.dev/releases/0.2.0/pollen-0.0.1.wasm and optionnally (but encouraged) a checksum sha256: 49cd8e1846b1612a0d5686918b502fe29e070e7bf9613c1ba9a1dfe5417d0f2a. Gitroot will download, check and run it. Of course you need to activate it. All url and checksum are in the versions page.

I have added a mecanisme to check that the plugin you try to run is compatble with your version of GitRoot. So launching ladybug-0.0.1.wasm in gitroot-0.2.0 will log an error and not run the wasm. As GitRoot is in alpha version all new gitroot version will need plugins update.

What next?

With the exception of any new bugs detected for the next iteration, I would like to focus on the following: