[Moodle/GIT] Retour d'XP sur la mise à jour de version de branche à branche

[Moodle/GIT] Retour d'XP sur la mise à jour de version de branche à branche

par Eric Villard,
Nombre de réponses : 0

Bonjour à toutes et tous,

essayant d'administrer au mieux les versions de nos sites Moodle en utilisant GIT, je viens d'être confronté à quelques problèmes lors de tests de préparation à la mise à jour vers la version 2.3.

Contexte du dépôt :

1 dépôt distant nommé "moodle", lié au dépôt officiel à l'url : git://git.moodle.org/moodle.git

1 branche personnalisée nommée "custom" correspondant au site en production et dont la mise à jour est liée à la branche MOODLE_22_STABLE du dépôt "moodle"

Problème rencontré :

Lors de la tentative de mise à jour de cette branche vers la branche MOODLE_23_STABLE du dépôt moodle par la commande :

git pull moodle MOODLE_23_STABLE

j'ai reçu tout un tas de messages de conflits insolvables pour un grand nombre de fichiers.

Je me suis rendu compte que la gestion des branches des versions de Moodle est organisée de telle manière que chaque branche est indépendante.

Ceci induit que toute correction apportée dans une branche n'est pas forcément répercutée dans d'autres branches, et dans ce cas peut créer des zones de conflits lors des mises à jour des fichiers concernées.

J'ai trouvé dans le forum anglophone un fil de discussion traitant de cette problématique : http://moodle.org/mod/forum/discuss.php?d=191774

J'ai appliqué la solution proposée par Tim Hunt et cela a fonctionné pour moi.

En résumé et en considérant le contexte décrit plus haut, il faut pour mettre à jour la branche custom vers la v2.3 sans perdre les éléments de personnalisation :

  1. extraire dans une branche temporaire la version à jour de la branche Moodle sur laquelle est basée la branche custom (ici MOODLE_22_STABLE) :
    git checkout -b moodle_22 moodle/MOODLE_22_STABLE
  2. extraire dans une branche temporaire la version à jour de la branche Moodle cible (ici MOODLE_23_STABLE) :
    git checkout -b moodle_23 moodle/MOODLE_23_STABLE
  3. effectuer une fusion logique de la branche moodle_22 sur moodle_23 (actuellement branche courante) en ne gardant que le code de moodle_23 :
    git merge --strategy=ours moodle_22
    (La branche moodle_23 contient maintenant les informations manquantes relatives aux modifications apportées à la branche MOODLE_22_STABLE tout en conservant son propre code.)
  4. revenir à la branche personnalisée :
    git checkout custom
  5. effectuer la fusion physique de la branche moodle_23 sur la branche custom (actuellement branche courante), donc procéder à la mise à jour de version attendue :
    git merge --strategy-option=patience moodle_23
    (La branche custom contient maintenant les modifications apportées à la branche MOODLE_23_STABLE tout en conservant les éléments de personnalisation apportés.)
  6. supprimer les branches temporaires :
    git branch -D moodle_22 moodle_23

Ne reste qu'à continuer le processus de mise à jour habituel soit par le site et le menu Administrateur > Notifications soit en ligne de commande.

Voilà pour ces quelques informations, n'hésitez surtout pas à nous faire profiter également de votre expérience.

Eric

Moyenne des évaluations Utile (3)