Sortie d'une nouvelle branche GEPI

Nouvelle branche

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


# 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 © 2001-20[0-9]\{2\}|Copyright \© 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} (version stable)|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

# Preparatifs pour mon arborescence web en vue d'une future version
mv ${chemin_arbo_web}/gepi_git_trunk/utilitaires/updates/${oldv}_to_dev.inc.php  ${chemin_arbo_web}/gepi_git_trunk/utilitaires/updates/${oldv}_to_${newv}.inc.php
cp utilitaires/updates/${newv}_to_dev.inc.php ${chemin_arbo_web}/gepi_git_trunk/utilitaires/updates/

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

<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>

- 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 :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

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.

<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>

- 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