Sélection d'une gestion de contrôle de source (SCM)
La gestion du contrôle des sources (SCM) est mieux connue sous le nom de gestion du contrôle des révisions. Redmine prend actuellement en charge les systèmes de contrôle de révision suivants : Subversion (SVN), Git, Mercurial, Bazaar, Darcs et CVS.
Comme cela a été mentionné, Redmine peut utiliser les SCM non seulement comme lecteurs de code source. Il peut également associer une révision à des problèmes (et avoir des révisions répertoriées sur les pages des problèmes). Il peut fermer automatiquement un problème et/ou modifier son taux de réussite lorsqu'un commit approprié est effectué dans le dépôt. Cela nous permet d'utiliser la syntaxe Wiki dans les messages de validation. Cela nous permet également de faire référence à une révision, un commit ou un fichier à partir de n'importe quel contenu alimenté par la syntaxe Wiki, pouvant être une page Wiki, une description de problème, une description de projet, un message de forum,... Mais tout cela fait de Redmine un navigateur de code source (avancé), pas un gestionnaire SCM (ce qui peut cependant être fait avec des plugiciels). Alors pourquoi choisir le bon SCM est-il si important ?
Très probablement, vous souhaiterez une intégration plus approfondie entre Redmine et les SCM dès que vous connaîtrez les options. Ainsi, on peut dire que Redmine supporte trois niveaux d'intégration :
- Redmine comme navigateur de code source
- Redmine comme authentificateur SCM
- Redmine en tant que gestionnaire SCM
Le niveau de navigateur de code de base nécessite que les clients SCM correspondants soient installés sur le même serveur sur lequel Redmine s'exécute, vous pouvez donc ne vouloir utiliser que certains des SCM pris en charge. De plus, le support de base n'est pas équivalent pour tous les SCM. Ainsi, le graphe de révision (similaire à celui sur GitHub) n'est pris en charge que pour Git et Mercurial. De plus, ces deux SCM ne peuvent être que locaux (les dépôts doivent être sur le même serveur que Redmine).
En outre, Redmine est livré avec Redmine.pm, un module Perl pour le serveur Web Apache pouvant être utilisé pour authentifier les utilisateurs de Subversion, Git et Mercurial auprès de Redmine. Si l'outil Redmine.pm a été intégré, vous pouvez contrôler qui a accès au dépôt du projet et quel type d'accès (lecture ou écriture) ils peuvent avoir en gérant simplement les membres du projet (et les rôles). Quelque chose de similaire (avec des modifications supplémentaires apportées à Redmine et/ou au système) peut également être réalisé pour Bazaar. Cependant, les SCM de Subversion et Git sont mieux pris en charge par l'outil Redmine.pm et leur prise en charge est prête à l'emploi. Dans le même temps, vous aurez très probablement des problèmes pour configurer d'autres SCM pour s'authentifier auprès de Redmine.
La seule fonctionnalité manquante pour que Redmine devienne un gestionnaire SCM complet est la possibilité de créer des dépôts. Mais une telle fonctionnalité est également fournie avec Redmine et est fournie par l'outil de ligne de commande reposman.rb. Cet outil prend en charge Subversion, Darcs, Mercurial, Bazaar et Git (c'est-à-dire tous sauf CVS). Cependant, le problème est que pour le faire fonctionner, vous devez créer une tâche cron exécutant cet outil périodiquement. Heureusement, des solutions alternatives ne posant pas de tels problèmes sont fournies par des plugiciels tiers tels que SCM Creator et Redmine Git Hosting.
Lorsque vous choisissez SCM, vous devez également tenir compte de vos besoins, de votre expérience, des préférences de votre équipe ou de votre public, de la facilité d'utilisation,... Cependant, les meilleurs SCM intégrables semblent être Subversion et Git.