STASH : la gestion de vos repositories de code sous Git


Publié par
Sébastien Delcoigne

8 novembre 2013

Vous n’en avez peut-être pas encore entendu parler, mais Stash est la solution d’avenir  de gestion de dépôt de code source distribué « behind the firewall ».

En plus d’adresser les problématiques classiques que rencontrent les équipes qui versionnent leur code source avec Git, comme la gestion des dépôts, des branches et les accès, elle permet aussi de gérer des workflows de collaboration et de la revue de code et s’intègre harmonieusement avec les autres produits d’Atlassian.

Pour un tour d’horizon de la solution, continuez à lire.

Déploiement et pricing

Stash est un produit onSite (ou Behind the Firewall) c’est à dire à déployer dans son infrastructure, contrairement à un service disponible sur le cloud (en SAAS) comme Atlassian OnDemand par exemple. C’est une application standalone qui nécessite simplement de disposer d’une machine physique ou virtuelle avec Java 1.6 ou plus récent et Git. Il n’est pas nécessaire de la déployer sur un serveur d’applications.

Le modèle de licence est basé sur le nombre d’utilisateurs selon les mêmes paliers que les autres produits Atlassian.

Prise en main

Les utilisateurs de solutions Atlassian ne seront pas dépaysés, l’interface est semblable aux autres produits comme Confluence ou JIRA. Une version d’évaluation gratuite pendant 30 jours est disponible. Elle se lance en 30 secondes montre en main, permet de se faire un bon aperçu des caractéristiques du produit et ainsi voir comment il peut adresser vos problématiques de gestion du code source.

Fonctionnalités

Gestion des projets, dépôts et branches

Un interface simple et intuitive permet de créer des projets qui contiennent un ou plusieurs dépôts qui eux mêmes contiennent une ou plusieurs branches. Une fois dans un repository, les fonctions de base permettent de cloner, forker, faire une pull request, naviguer/rechercher dans les fichiers versionnés, parcourir les révisions, les commenter ou encore simplement voir les branches.

En plus des fonctionalités de base sur le repository et d’un log d’audit, on peut configurer des hooks très utiles qui vont déclencher des actions lors d’une étape du cycle du code source (ex : lancer un build sur une forge après réception du code dans le dépôt).

Gestion des utilisateurs et de leurs accès

L’intégration avec un directory (LDAP) est supportée nativement. D’autre part il est possible de configurer très finement les accès à différents niveaux : globalement pour tout Stash, au niveau du projet, par dépôt et par branche (nommée ou via regex). On peut autoriser l’accès public à des dépôts, sinon on fixe les accès (admin, écriture et lecture) par utilisateur et/ou par groupe.

Concernant la sécurité, les utilisateurs peuvent accéder au dépôt via le protocole SSH (en renseignant un clef publique dans la page profil) ou via HTTP par authentification simple.

Workflows

Selon les workflows utilisés, Stash facilite la collaboration des équipes en proposant des fonctionnalités avancées de collaborations adaptées aux équipes de toute taille et sur tout type de projet.

Feature branch

Pour les petites équipes dans un contexte d’utilisation centralisée, il est commun de faire une branche par fonctionnalité. Celle-ci est réintégrer ensuite dans la branche principale par un pull request.


Fork and pull

Dans un contexte d’utilisation plus experte et pleinement distribuée, on peut forker un dépôt et faire des pull requests très facilement depuis son fork. Il existe une fonction de synchronisation automatique d’un fork avec son parent.

Reviews

Des fonctions collaboratives de commentaires et de demandes de revue de code sont aussi de la partie. Il est très simple d’obtenir du feedback sur son code et d’en donner à ses collaborateurs. On peut aussi contraindre les pull request à être revues et ou construites par une forge (intégration continue), comme Bamboo.

Intégration avec JIRA

L’intégration avec le très célèbre ’issue tracker’ est aussi un atout de taille si c’est déjà un composant de votre usine logicielle. Des onglets apparaissent dans les tickets Jira pour voir les commits et le code source référencés par le ticket et réciproquement depuis Stash pour une navigation simplifiée.

Néanmoins les Smart Commits, c’est a dire la possibilité d’effectuer directement des actions sur les tâches JIRA via des mots-clef dans les commentaires de commit ne sont pas encore disponibles. Ils le sont sur BitBucket.

En vrac

Nous n’avons pas fini d’aborder l’ensemble des fonctionnalités disponibles dans Stash. Sachez qu’il y en a encore une multitude comme la notification par email, la possibilité pour les développeurs d’avoir un repository personnel, les markdowns dans les commentaires, de nombreuses extensions via les plugins disponibles dans la place de marché Atlassian, etc.

Conclusion : qu’est ce qui fait l’intérêt de Stash?

Les système de gestion de code source distribués prennent de plus en plus d’ampleur dans l’industrie logicielle et parmi eux Git est celui qui est le plus utilisé. Stash fourni une solution d’outillage moderne pour Git qui répond pleinement à la quasi totalité des cas d’utilisation en entreprise. Elle se distingue de la concurrence (gitosis, gitolite, Redmine…) par sa complétude, sa très grande simplicité d’utilisation, sa communauté en plus de son intégration avec les produits Atlassian et le support qui est fourni par Atlassian.