Référentiel : tout ce qu’il faut savoir sur le répertoire d’archives numériques

Les données et les informations sont stockées dans un référentiel, où elles peuvent être consultées et modifiées. Il existe différents référentiels qui sont utilisés pour le contrôle des versions, les métadonnées, etc.

Qu’est-ce qu’un référentiel ?

Dans le domaine de la programmation, un référentiel (repository en anglais) constitue une archive numérique dans laquelle les données, les documents, les progrès de développement, les métadonnées et les programmes peuvent être conservés et consultés. Ce n’est pas qu’un simple stockage : il permet également de contrôler les versions. Le référentiel facilite le travail collaboratif sur des projets communs, même avec un grand nombre de participants ou une large distance géographique. On distingue différentes formes de référentiels, qui se différencient par leur approche et leur structure. Les plus connus sont GitHub et Google Repository.

La base d’un référentiel est généralement une base de données qui, selon les besoins, peut être installée sur un disque dur local, de manière centralisée sur un serveur ou répartie dans un Content Delivery Network (CDN), c’est-à-dire une association de nombreux serveurs différents. Sur cette base, des catalogues de données sont créés, qui contiennent non seulement les formes et les représentations des différents objets stockés, mais fournissent également des informations sur leurs relations mutuelles. Toutes ces informations sont stockées sous forme de métadonnées et peuvent donc être recherchées, consultées, modifiées et adaptées à tout moment avec l’autorisation correspondante.

Quelle est la structure d’un référentiel ?

La structure d’un référentiel peut être illustrée par l’image d’un arbre. Celle-ci se retrouve également dans le domaine du développement de logiciels. On y fait la distinction entre le tronc (trunk en anglais), qui contient la version actuelle d’un projet ainsi que le code source, et les branches (branches en anglais), dans lesquelles sont enregistrées les modifications et les nouveautés. Celles-ci sont ensuite ajoutées à la racine, afin que tous les participants aient accès à tous les états de développement. Le stockage fonctionne à l’aide de balises.

Quels sont les différents types de référentiels ?

Tous les référentiels ne se ressemblent pas ; c’est pourquoi il faut commencer par distinguer le type d’archive requis. En principe, il existe de nombreuses approches différentes, mais les suivantes sont les plus connues.

Référentiel pour la gestion des versions

L’objectif de la gestion des versions est de stocker les données, les étapes de travail et les connexions de manière logique et claire dans une archive commune. Les fichiers de code source et autres données y sont déposés et archivés. Si un développeur souhaite continuer à travailler sur un projet, les données peuvent être copiées du référentiel sur un disque dur local. Cette opération est appelée « extraction ». Le développeur travaille alors avec les données locales, effectue des modifications ou rejette les modifications précédentes. Une fois le travail terminé, la dernière version du projet est à nouveau chargée dans le référentiel. Toutes les modifications et tous les commentaires sont alors consignés.

Cette approche présente plusieurs avantages. Les utilisateurs peuvent travailler sur un projet sans que les anciennes versions soient écrasées. Au contraire, tous les états de développement sont consignés, de sorte qu’il est possible de revenir à un ancien état de développement en cas d’erreur ou de développement incorrect. De plus, un tel référentiel permet de travailler en équipe sur un seul et même projet. Toutes les personnes concernées vérifient leurs états et peuvent ainsi développer en parallèle sans que les états soient écrasés ou que les modifications soient perdues. Tous les participants peuvent théoriquement continuer à travailler à partir de n’importe quelle version, sans problèmes, accords préalables ou risques.

Les systèmes de gestion de versions les plus connus sont CVS, GitHub et SVN.

Référentiel de métadonnées

Un référentiel de métadonnées est surtout utilisé dans le segment des infrastructures informatiques très complexes. Un tel référentiel contient des données de l’ensemble du système ainsi que des informations sur les contextes et l’environnement de l’infrastructure. L’avantage est que d’éventuelles modifications ne nécessitent pas d’intervention dans le code source proprement dit. L’implémentation de programmes supplémentaires peut également être évitée. Au lieu de cela, la table de la base de données, qui constitue la base du système en question, est modifiée facilement. Le référentiel de métadonnées est particulièrement utilisé dans le cadre de l’intégration d’applications d’entreprise (IAE) et dans le domaine des entrepôts de données.

Référentiel pour les logiciels

Pour les utilisateurs de Linux, le référentiel de logiciels est un outil important pour le travail quotidien. Celui-ci contient en premier lieu les programmes et les métadonnées correspondantes telles que les explications, les notes, les dépendances et les modifications. L’installation et toutes les mises à jour sont effectuées à l’aide d’un gestionnaire de paquets. Ainsi, les utilisateurs n’ont pas à s’occuper de l’actualité de leurs applications, mais maintiennent automatiquement leur système à jour. Celles-ci proviennent souvent de la communauté. Les mainteneurs de paquets mettent à disposition les données actualisées et gèrent le référentiel logiciel correspondant.

Référentiel pour les serveurs de documents

Pour les publications en réseau et les serveurs de documents de grande envergure, le référentiel est également utilisé, du moins au sens figuré. Bien entendu, certaines particularités ne sont pas reprises telles quelles, mais la procédure est adaptée à l’utilisation. Des archives ouvertes connues comme arXiv mettent ainsi à la disposition du grand public de nombreuses publications dans les domaines de la biologie, de l’informatique, des mathématiques, de la physique et des statistiques. Un expert vérifie les nouveaux articles et les autorise ou les refuse. Les ouvrages scientifiques sont alors disponibles à la consultation. Cependant, la fonction d’édition, disponible avec le référentiel pour la gestion des versions, est supprimée.

Référentiel pour CASE

Un référentiel est souvent utilisé dans le domaine du développement de logiciels assisté par ordinateur (Computer-aided Software Engineering). Il est surtout utilisé pour enregistrer les données de projet, la documentation et le code source.

Quel est l’intérêt des référentiels ?

Il existe de nombreux référentiels distincts pour différents cas d’utilisation. Il est même possible de faire la distinction entre les solutions open source et celles qui sont proposées dans le commerce. Le référentiel open source le plus connu est certainement GitHub. Il existe aussi de nombreuses alternatives à GitHub comme Apache Allura, Bazaar, Gitolite, Mercurial ou SourceForge. Vous trouverez également une comparaison précise entre GitHub et GitLab dans le Digital Guide. Parmi les référentiels propriétaires les plus connus, on trouve Alienbrain, Bitkeeper, IBM Rational Synergy ou MySQL Yum.

L’intérêt d’un référentiel dépend avant tout de vos exigences et de votre méthode de travail. Un référentiel peut faciliter considérablement le travail et optimiser le flux de travail, en particulier pour les équipes. Même si des collaborateurs accèdent à un projet et apportent des modifications à des moments et des endroits différents, la base elle-même reste toujours sécurisée. Il est donc possible d’essayer des solutions sans mettre en péril les progrès réalisés auparavant. Puisqu’il existe de nombreuses solutions open source performantes, mieux vaut d’abord les tester et ne passer à une version commerciale qu’en cas de besoin.

Comment fonctionne un référentiel ?

Bien utilisé, un référentiel peut donc apporter de nombreux avantages. L’exemple de la plateforme d’hébergement GitHub montre bien comment cela fonctionne. Après l’installation et la configuration de GitHub, une interface utilisateur très intuitive vous attend. Des tâches peuvent y être attribuées et traitées indépendamment les unes des autres. Pour les modifications, on utilise des commits et des pulls, qui sont tous clairement répertoriés. Ainsi, non seulement la direction de l’équipe garde un œil sur toutes les étapes de travail, mais tous les membres peuvent également suivre le projet dans les moindres détails. Si vous souhaitez en savoir plus sur le principe de la plateforme, vous pouvez consulter notre tutoriel Git informatif.