Projet

Général

Profil

Sortie nouvelle branche » Historique » Révision 17

Révision 16 (Stéphane Boireau, 21/08/2016 15:16) → Révision 17/20 (Stéphane Boireau, 21/08/2016 15:18)

h1. Sortie d'une nouvelle branche GEPI 

 h2. Nouvelle branche 

 Supposons que la version stable précédente soit la 1.6.8, 1.6.4, que la version qui va sortir en stable soit la 1.6.9 1.6.5 et qu'on suppose que la version de développement s'appellera un jour 1.7.0 1.6.6 

 <pre> 

 # Renseignement de quelques variables: 

 chemin_arbo_web=/home/www/html/steph 

 # Ancienne stable: 
 old_version=1.6.8 
 # Nouvelle stable: 
 version=1.6.9 
 # Nom probable de la version devel quand elle passera en stable: 
 devel_version=1.7.0 
 # Noms courts intervenant dans des noms de fichiers: 
 oldv=168 
 newv=169 
 # Annee scolaire 
 gepiYear="2016/2017" 

 # Mise en place d'une arborescence web toute propre de l'ancienne version Gepi pour faire les tests de migration $old_version -> $version 
 git checkout release-${old_version} 
 mkdir $chemin_arbo_web/gepi${oldv}_to_${newv} 
 cp -r ./* $chemin_arbo_web/gepi${oldv}_to_${newv}/ 
 chown -R :www-data $chemin_arbo_web/gepi${oldv}_to_${newv} 
 chmod -R 770 $chemin_arbo_web/gepi${oldv}_to_${newv} 

 # Passage sur master qui va devenir nouvelle stable: 
 git checkout master 
 git pull 

 # Mise en réserve des fichiers (ils sont aussi dans mon arbo web master, mais bon): 

 tmp=$HOME/tmp/gepi_$(date +%Y%m%d%H%M%S) 
 mkdir -p $tmp $tmp/lib $tmp/sql $tmp/utilitaires 
 for i in $(echo "changelog.txt 
 MAJ.TXT 
 INSTALL.txt 
 README.txt 
 lib/global.inc.php 
 sql/data_gepi.sql 
 utilitaires/maj.php 
 utilitaires/maj.sh") 
 do 
 cp -v $i $tmp/$i 
 done 

 # Création de la branche pour la nouvelle stable: 
 git checkout -b release-${version} 

 # Modif des fichiers ci-dessus dans la nouvelle arborescence ${version} pour changer la version et supprimer les références à une version de DEVEL. 
 sed -i "s|^Gepi-master (Version de développement)|Gepi-${version} ($(date +%d/%m/%Y))|" changelog.txt 
 sed -i "/Version de développement: NE PAS INSTALLER EN PRODUCTION \!/d" MAJ.TXT 
 sed -i "s|^GEPI-master|Gepi-${version}|" MAJ.TXT 
 sed -i "s|^La branche stable actuelle est la .*|La branche stable actuelle est la ${version}|" MAJ.TXT 
 sed -i "s|^GEPI-master (version de développement)|GEPI-${version} ($(date +%d/%m/%Y))|" README.txt 
 sed -i "s|^GEPI-master (version de développement)|GEPI-${version} (version stable)|" INSTALL.txt 
 sed -i "/Version de développement: NE PAS INSTALLER EN PRODUCTION \!/d" INSTALL.txt 
 sed -i "s|^La branche stable actuelle est la ${old_version}|La branche stable actuelle est la ${version}|" INSTALL.txt 
 sed -ri 's|^(\$gepiVersion =)(.*)|\1 "'$version'";|' lib/global.inc.php 
 sed -i "s|INSERT INTO setting VALUES ('version', 'master');|INSERT INTO setting VALUES ('version', '$version');|" sql/data_gepi.sql 
 sed -i "s|updates/${oldv}_to_dev.inc.php|updates/${oldv}_to_${newv}.inc.php|" utilitaires/maj.sh 
 sed -i "s|quelle_maj(\"master\")|quelle_maj(\"$version\")|" utilitaires/maj.php 
 sed -i "s|updates/${oldv}_to_dev.inc.php|updates/${oldv}_to_${newv}.inc.php|" utilitaires/maj.php 
 sed -i "s|INSERT INTO setting VALUES ('gepiYear', '[0-9/]*');|INSERT INTO setting VALUES ('gepiYear', '$gepiYear');|" sql/data_gepi.sql 
 sed -i "s|Copyright &copy; 2001-20[0-9]\{2\}|Copyright \&copy; 2001-${gepiYear:5:4}|" templates/origine/login_template.html 

 git mv utilitaires/updates/${oldv}_to_dev.inc.php utilitaires/updates/${oldv}_to_${newv}.inc.php 

 sed -i "s| jour vers la version ${version}(dev)| jour vers la version ${version}|" utilitaires/updates/${oldv}_to_${newv}.inc.php 

 # A CE STADE LES OPERATIONS NE SONT PAS SCRIPTEES 
 # Tester cette nouvelle stable sur une nouvelle install et sur une migration. 
 # Ensuite seulement poursuivre les opérations indiquées ci-dessous. 

 git commit -a -m "Correction des références à master dans la nouvelle branche ${version}" 

 # Envoi de la nouvelle branche 
 git push origin release-${version} 


 # On va s'occuper de la version de devel: 
 git checkout master 
 git merge release-${version} 

 # On va remettre la version de devel en état: 

 # Correction inverse pour ce qui concerne les références à la version de DEVEL et au numéro de version. 
 sed -ri "s|^(Gepi-${version} .*)|Gepi-master (Version de développement)\n===========================\n\n\1|" changelog.txt 
 sed -i "s|^La branche stable actuelle est la|Version de développement: NE PAS INSTALLER EN PRODUCTION \!\nLa branche stable actuelle est la|" MAJ.TXT 
 sed -i "s|^Gepi-${version}|GEPI-master|" MAJ.TXT 
 sed -i "s|^GEPI-${version} .*|GEPI-master (version de développement)|" README.txt 
 sed -i "s|^Gepi-${version} |GEPI-master (version de développement)|" INSTALL.txt 
 sed -i "s|^La branche stable actuelle est la|Version de développement: NE PAS INSTALLER EN PRODUCTION \!\nLa branche stable actuelle est la|" INSTALL.txt 
 sed -ri 's|^(\$gepiVersion =)(.*)|\1 "master";|' lib/global.inc.php 
 sed -i "s|INSERT INTO setting VALUES ('version', '$version');|INSERT INTO setting VALUES ('version', 'master');|" sql/data_gepi.sql 
 sed -i "s|'${old_version}','defaut'|'${old_version}','${version}','defaut'|" utilitaires/maj.sh 
 sed -ri "s#require './updates/${oldv}_to_${newv}.inc.php';#require './updates/${oldv}_to_${newv}.inc.php';\n      }\n\n      if (\$force || \$start_from == '${version}') {\n          require './updates/${newv}_to_dev.inc.php';#" utilitaires/maj.sh 

 # Ajout d'un section dans maj.php (il faut le faire à la main...) 
 # Ebauche de truc à tester: 
 sed -ri "s#require 'updates/${oldv}_to_${newv}.inc.php';#require 'updates/${oldv}_to_${newv}.inc.php';\n\t}\n\n\tif ((\$force_maj == 'yes') or (quelle_maj(\"master\"))) {\n          require 'updates/${newv}_to_dev.inc.php';#" utilitaires/maj.php 

 # Création d'un fichier utilitaires/updates/${newv}_to_dev.inc.php 
 grep -B 1000 "^// Fin SECTION EXEMPLE$" utilitaires/updates/${oldv}_to_${newv}.inc.php > utilitaires/updates/${newv}_to_dev.inc.php 
 sed -i "s|${version}|${devel_version}|" utilitaires/updates/${newv}_to_dev.inc.php 
 sed -i "s|${old_version}|${version}|" utilitaires/updates/${newv}_to_dev.inc.php 
 echo -e "*/\n\n\n?>" >> utilitaires/updates/${newv}_to_dev.inc.php 
 git add utilitaires/updates/${newv}_to_dev.inc.php 

 git commit -m "Rétablissement des références à la version devel et ajout de ${newv}_to_dev.inc.php" ./ 

 git push origin 
 </pre> 


 h2. Obsolète: Sortie d'une nouvelle branche avec SVN 

 Supposons pour la suite que la branche stable actuelle soit la 1.6.1 et que la 1.6.2 soit sur le point de sortir. 
 La 1.6.2 va devenir la nouvelle stable. 

 Pour effectuer la sortie, concrètement, il faut: 

 - compléter le changelog.txt 
 <pre> 
 <span style='color:red'>    Faire un 

 >       svn log -r REVISION_DU_changelog_branche_precedente:REVISION_DE_LA_DERNIERE_MODIF https://svn.sylogix.org/gepiphp/trunk/ 

   pour consulter si nécessaire la liste des modifications effectuées. 
   Ça c'était pour SVN... 
   ... quelle serait la commande pour lister les diff? 
 </span> 
 </pre> 

 - Créer la nouvelle branche d'après la branche de développement (master) 

 >       git checkout master 
 >       git checkout -b release-1.6.2 
 >       git push git@github.com:tbelliard/gepi.git release-1.6.2 

 - Renommer dans le changelog.txt Gepi-trunk en Gepi-1.6.2 

 - Renommer dans le utilitaires/updates/1.6.1_to_dev.php en utilitaires/updates/1.6.1_to_1.6.2.php 

 - vérifier que le utilitaires/maj.sh et le utilitaires/maj.php tiennent bien compte de la nouvelle branche. 

 - modifier le titre GEPI-TRUNK en GEPI-1.6.2 dans les fichiers INSTALL.txt, MAJ.TXT et README.txt et supprimer les lignes d'alerte concernant la version de devel qui n'est pas recommandée en production. 

 - mettre à jour le numéro de version dans release-1.6.2/lib/global.inc.php et dans release-1.6.2/sql/data_gepi.sql 

 h2. Branche master 

 - créer une nouvelle section Gepi-trunk au début du fichier changelog.txt de la branche master 

 - dans les INSTALL.txt, MAJ.TXT et README.txt, la référence à la version de devel, doit être toujours présente. 
 <pre> 
 <span style='color:red'>Vérifier ce que donne un git merge release-1.6.2 dans la branche master... il risque de falloir y rétablir les références à la version de devel</span> 
 </pre> 
 - mettre à jour le trunk/utilitaires/maj.sh et créer un fichier trunk/utilitaires/updates/152_to_dev.inc.php pour les ajouts de tables, modifications de champs,... de la version suivante 

 - laisser le temps à Thomas de mettre à jour le script de génération des archives zip sur gepi.mutualibre.org 

 - envoyer un texte d'annonce pour mettre sur gepi-users