GitRoot is a small yet powerfull git forge. Download one binary, launch it and you have a forge that can :
Nothing more, nothing less.
Install plugins and you will be able to:
All of these plugins are completely independant. Yes, you can have boards without the web interface. How ? See raw GitRoot issues board, try it for yourself and you will love it.
Wants more? Build your own plugin!
I’m building GitRoot because I didn’t find any tool that can let me do what I want for my project. But at the same time, you may want to make something different for your own project, something different of 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 own project ?
So I try to follow these rules when developing my forge:
(pull|merge)-request
, boardsAs a developer I want to have a forge crafted for my unique project.
(pull|merge)-request
, issuesAs a developer I don’t want a complexe forge to manage my project.
As an administrator I want a forge that is easy to install and to maintain.
As an administrator I don’t want to depend on anyone else.
It’s not ready yet, but it will be, especially if you give me a hand.
In GitRoot everyting is stored in git, not in a database, not in a hidden blob in your git tree. Everything is stored in plain files aside your code.
How can you be sure no one writes on a file that they must not? Restrict by branch. Every GitRoot repository comes with a .gitroot/users.yml
file. This file gives the instructions to GitRoot who can write where.
Initially, you’re the only one to have access to your default branch. If someone else tries to push to this branch, GitRoot will refuse its modifications.
However, everyone can create a branch. When creating and pushing a branch, GitRoot will add right for this user to this branch. This means that no one else will be able to modify 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. This means that everyone can read files and modify them, locally or into a new branch. But only the owner can merge 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 everything on your own 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.
GitRoot is currently in alpha version. Feel free to experiment with it, but don’t use it for production yet.
GitRoot can:
What I want to do before version 1.0:
Actually, you are currently on the project. Yes this is GitRoot!
Well you are on the instance of GitRoot which hosts the code of GitRoot. Unfortunatly this instance is reserved for GitRoot itself.
If you want to try GitRoot for your own project, please read the documentation.
You will find anything you need to know into the documentation. Since GitRoot is itself a GitRoot repository you should be able to contribute to it.
On this instance we use some plugins. For example, the grafter
plugin which manages how a portion of code can be incorporated into the default branch. So be sure to read the contributing to understand how it works.
And yes, as GitRoot stores all data in git, you need to know how to use git before contributing to this project (code, issue, translation…). In the future I hope to be able to allow to do git commit
and git push
commands directly from the browser, so that anybody will be able to participate.