GitRoot

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

GitRoot is a tiny yet powerfull git forge. Download one binary, launch it and you have a forge which can:

Nothing more, nothing less.

Install plugins and you will be able to:

All of this plugins are completly independants. Yes, you can have boards without web. How? See raw GitRoot issues board, try it and you will love it.

Wants more? Build your own plugin!

Why am I doing this?

I’m doing GitRoot because no other will let me do what I want for my project. And at the same time, you may want to make something else for yours, something that doesn’t resemble my idea of a perfect project.

Every project is unique, so why don’t we have the freedom to modify our forge to suit our project?

So I try to follow these rules when developing my forge:

As a developper I want:

As a developper I want to have a forge crafted for my unique project.

As a developper I don’t want:

As a developper I don’t want a complexe forge to do my project.

As an administrator I want:

As an administrator I want a forge that’s easy to install and maintain.

As an administrator I don’t want:

As an administrator I don’t want to depend on anyone else.

If you are like me, you will love GitRoot.

It’s not ready yet, but it will be, especially if you give me a hand.

How it works?

In GitRoot all is stored in git, not in database, not in hidden blob in your git tree. All is stored in plain files aside your code.

How to be sure no one write where they must not? Restrict by branch. Every GitRoot repository comes with a .gitroot/users.yml file. This file tell to GitRoot who can write where.

At start, only you has access to your default branch. If someone else try to push to this branch, GitRoot will refuse its modifications.

But everyone can create a branch, when creating one and push, GitRoot will add right for this user to this branch. Like that no one else will be able to touch it.

If you add a user, by editing .gitroot/users.yml or by merging a branch where a user has added itself, this user will be able to push to the default branch.

All GitRoot features are articulated around this concept. So every people can read files and modify them, locally or in a new branch. But only owner can change them in the default branch which represent the current state of your repository.

As your forge is managed by a root repository this concept permit to manage all your forge: a repository is created when you add (or merge) a change of .gitroot/repositories.yml in your default branch of your root repository.

See more details in the documentation.

When will be it available?

Today GitRoot is in alpha version. Play with it, but don’t use it for production today.

GitRoot can:

What I want to do before version 1.0:

Where is the project?

You are on the project. Yes this is GitRoot!

Well you are on the instance of GitRoot which host the code of GitRoot. Unfortunatly this instance is reserved for GitRoot itself.

If you want to try GitRoot for your project please read the documentation.

How to contribute?

In the documentation you will find all you need to understand how to clone and push to any GitRoot repository. As GitRoot is itself a GitRoot repository you should be able to contribute to it.

On this instance we use some plugins. Notably the grafter plugin which manage how a portion of code can be incorporated in the default branch. So be sure to read the contributing to understand how it works.

And yes, as GitRoot stock all data in git, you need to know git before making contribution (code, issue, translation…). In the future I hope to be able to do git commit and git push directly from the browser, like that anybody will be able to participe.