Introduction

Que ce soit au travail comme à la maison, j’utilise Git, le logiciel de gestion de version décentralisé, au quotidien. J’ai plusieurs projets, parfois publics, parfois privés.

Jusqu’à maintenant, pour gérer mes dépôts, j’utilisais un mix de :

et le petit nouveau que j’utilise chez Framasoft :

Chacun de ces outils apporte quelque chose, que ce soit l’outil de gestion des tickets, un wiki attaché, des dépôts (public/gratuit) publics, un environnement d’intégration continu, etc. Mais utiliser ces outils nous fait dépendre d’une entreprise, et à tout moment le service - gratuit jusque là - peut couper.

Je me suis dit qu’il était temps d’héberger une interface à mes dépôts (avec copie de sauvegarde en prime).

Image d'une tasse de thé ayant 3 touches de claviers qui flottent et dont les caractères sont T, E et A

Photo trouvée sur le profil de chumsdock sur Flickr sous licence CC BY-SA 2.0.

Comment en être arrivé au choix de Gitea ?

Dans mes possibles il y avait :

  • Gitlab : récent, écrit à l’aide de Ruby On Rails et complet (propose l’intégration continue, les pages webs, la génération d’une version production, etc.)
  • un agglomérat de git daemon, gitolite et git web : pour bénéficier d’un accès en git://, gérer les dépôts publics/privés et avoir une interface web pour naviguer dans le dépôt de code
  • Gogs : un outil léger, écrit en Go, se voulant être une solution sans prise de tête

Mes problèmes avec ces outils :

  • Gitlab : trop gourmand en mémoire vive. J’aimerais la possibilité de migrer sur une machine plus légère en cas de besoin
  • le mix daemon+gitolite+web : mes essais sur l’interface web des dépôts privés n’étaient pas concluant. La mise en relation des outils était embêtante. Et pas de gestion de tickets sur chaque projet.
  • Gogs : documentation d’installation peu détaillée

Vu mes maigres solutions, j’ai tenté l’aventure avec Gogs. L’envoi de courriel sous Gogs ne semble pas fonctionner pour tout le monde et l’alternative via sendmail n’est pas encore implémentée, du coup à la lecture de ce dernier lien j’ai visé Gitea. Et je ne suis pas déçu du voyage.

Gitea

Gitea est un fork de Gogs. Un outil pour gérer des dépôts Git via une interface web. Cela propose une gestion des tickets attachés au projet, des pages de Wiki, une gestion des utilisateurs et des groupes d’utilisateurs et des liens vers de l’intégration continue.

Gitea, tout comme Gogs, se veut être multiplateforme, léger, en un binaire unique et Open Source !

L’équipe de Gitea explique sur son blog pourquoi elle a forké le projet. Je résumerais la chose ainsi : Gogs ne possède qu’une et une seule porte d’entrée aux contributions, c’est à dire un seul développeur. Ce qui, à long terme, ne permet probablement pas d’en assurer la pérénité. Gitea résout le problème en proposant plusieurs personnes pour maintenir le projet. Personnes précédemment choisies par la communauté.

Quelles différences avec Gogs ?

Outre la centaine de participations au projet et la quarantaine de bugs résolus par Gitea, l’outil propose quelques fonctionnalités supplémentaires comme :

  • la prise en charge d’OpenID pour s’identifier
  • l’option sendmail pour envoyer des courriels
  • le support de git-lfs afin d’inclure le versionnement de fichiers de plus grosse volumétrie

Par ailleurs la plupart des variables autrefois connues sous le nom GOGS_WORK_DIR sont remaniées en GITEA_WORK_DIR.

L’apparence visuelle est aussi légèrement modifiée aux couleurs de Gitea.

Ce choix est tout de même risqué

Utiliser un projet forké a des risques, comme je l’ai vu pour ChiliProject, fork de Redmine qui a donné lieu 4 ans plus tard à un essouflement des personnes et un beau script de migration vers Redmine. Ce qui est tout de même atypique de pouvoir revenir au projet initial sans casse !

Je risque :

  • d’utiliser un projet sans mises-à-jour
  • de ne plus pouvoir retourner à Gogs le jour J
  • perdre mon temps

Défi accepté, j’utilise Gitea :-).

Conclusion

À première vue l’outil semble fonctionner. Il est agréable à utiliser. Me fournit les dépôts publics et privés dont j’avais besoin. Un accès SSH aux dépôts. La possibilité d’ajouter plusieurs clés d’accès à ces dépôts suivant mes machines. La gestion du projet via tickets, wiki, etc. Et il reste léger, la page de statistiques affichant une utilisation de 20MB sur le serveur.

En outre j’ai profité de l’installation de cet outil pour rédiger une page recensant les variables d’environnement disponibles sur Gitea. Je souhaite à Gitea une longue vie afin de pouvoir maintenir mon service Git à flot ;).

J’ai d’ailleurs participé à la rédaction complète d’une page sur les variables d’environnement spécifiques à Gitea