Conservation de l'historique dans le génie logiciel/Introduction

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Introduction
Icône de la faculté
Chapitre no 1
Leçon : Conservation de l'historique dans le génie logiciel
Retour auSommaire
Chap. suiv. :Concepts
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Conservation de l'historique dans le génie logiciel : Introduction
Conservation de l'historique dans le génie logiciel/Introduction
 », n'a pu être restituée correctement ci-dessus.

Le changeset est un ensemble de modifications applicables à des suites d'octets.

Exemple : "ajouter une ligne contenant Alice au fichier conte.txt" est un changeset. L'histoire des articles de Wikipédia est une séquence de changesets. Quand un traitement de texte propose d'annuler la dernière modification, il annule le dernier changeset. Un développeur archive les changesets appliqués à ses sources pour garder trace de leur évolution.

Un changeset est produit en faisant la différence entre deux ensembles d'octets. Sa forme dépend de l'usage.

Exemples: Ce que l’on voit dans Wikipedia est destiné à être lu par un néophyte. Pour une copie de fichier (via rsync par exemple), le changeset est calculé pour minimiser la quantité de données transmise. Pour des fichiers sources échangés entre deux développeurs, le changeset est à la fois lisible et exploitable par un logiciel.

En généralisant, un ensemble d'octets est toujours l’application d'une séquence de changeset partant de l'absence d'octets. Son histoire peut être analysée en observant chacun des changeset.

pas d'octet

  → ajout d'un fichier A 
     → ajout d'un fichier B (2 fichiers A et B)

Les histoires peuvent diverger, quand deux personnes (ou processus) font des modifications différentes sans se concerter.

pas d'octet

  moi → ajout d'un fichier A 
      moi  → ajout d'un fichier B (2 fichiers A et B)
      lui  → ajout d'un fichier C (2 fichiers A et C)

Ces divergences sont la règle et non l'exception car même dans une équipe très soudée, les développeurs ne se concertent pas à tout instant. Dans le cas de processus manipulant deux ensembles d'octets distincts, on peut au mieux rendre une telle divergence très peu probable mais jamais impossible.

Le développeur réconcilie les divergences qu’il a produit avec celles des autres. Il accepte un compromis afin que son histoire soit partagée, pour sortir de l'isolement.

Exemple: Quelqu'un corrige un bug, envoie un changeset à l'auteur principal qui l'applique et produit une nouvelle version.

pas d'octet

  moi → ajout d'un fichier A 
      moi  → ajout d'un fichier B
           lui  → ajout d'un fichier C (3 fichiers A, B et C)

En cas de conflit entre deux changeset, un nouveau changeset peut être produit et représente un compromis qui réconcilie les deux histoires.

Exemple: deux fichiers portant le même nom sont créés dans deux histoires différentes et avec des contenus différents. L'un des deux auteurs consent à renommer son fichier pour que les histoires puissent se mélanger sans conflit.