Projet

Général

Profil

GitMonteeVersion » Historique » Version 13

Igor GODI, 20/03/2014 15:41

1 2 Igor GODI
h1. Utiliser GIT pour réaliser une montée de version
2 2 Igor GODI
3 1 Igor GODI
Exemple réalisé lors de la montée de version de cdt de 4937 à 4944.
4 2 Igor GODI
5 13 Igor GODI
h2. Placer dans le dépôt un hook pre-commit
6 13 Igor GODI
7 13 Igor GODI
GIT ne remonte pas les dossiers vides et ils restent fantômes dans le dépôt local et ne sont pas remontés dans le dépôt distant.
8 13 Igor GODI
Il est possible d'ajouter un hook (crochet Git) pre-commit : script qui sera lancé dans votre dépôt local avant chaque commit. Ce script disponible en bas de cette page à copier dans .git/hooks de votre dépôt local.
9 13 Igor GODI
*A NOTER :* ce hooks n'est jamais remonté sur le dépôt Git lors du push.
10 13 Igor GODI
11 4 Igor GODI
h2. Placer dans le dépôt les sources de la nouvelle version
12 2 Igor GODI
13 2 Igor GODI
Aller sur la branche upstream
14 2 Igor GODI
<pre>
15 2 Igor GODI
$ git checkout upstream
16 2 Igor GODI
</pre>
17 2 Igor GODI
18 2 Igor GODI
Créer le dossier src/cdt-4944
19 12 Igor GODI
Y déposer les sources téléchargées
20 2 Igor GODI
21 12 Igor GODI
Commiter tout ça :
22 2 Igor GODI
<pre>
23 2 Igor GODI
$ git add .
24 2 Igor GODI
$ git commit -a
25 2 Igor GODI
</pre>
26 2 Igor GODI
27 2 Igor GODI
Merger dans patch :
28 2 Igor GODI
<pre>
29 2 Igor GODI
$ git checkout patch 
30 2 Igor GODI
$ git merge upstream
31 2 Igor GODI
</pre>
32 2 Igor GODI
33 4 Igor GODI
h2. Relever les références des commits intéressant sur la branche patch
34 2 Igor GODI
35 7 Igor GODI
*Note : on travaille dans la branche patch du dépot*
36 2 Igor GODI
Lister les logs
37 2 Igor GODI
<pre>
38 2 Igor GODI
$ git log --oneline
39 2 Igor GODI
</pre>
40 3 Igor GODI
41 3 Igor GODI
Résultat (un peu raccourci) :
42 3 Igor GODI
<pre>
43 3 Igor GODI
ea60edf Merge branch 'upstream' into patch
44 3 Igor GODI
d43fe43 Sources téléchargées de la 4944
45 3 Igor GODI
216e426 Ajoute sondes pour l'espace consultation prof et élève
46 3 Igor GODI
84c9536 Ajout de la sonde piwik
47 3 Igor GODI
dd6fbe9 Suppression de la pub pour l'appli mobile (fixes #6948)
48 3 Igor GODI
173d0a4 adaptation de la version 4.9.3.7 dont correction pour retrouver l'éditeur xinha (fixes #5672)
49 3 Igor GODI
b096469 suppression de la partie EOLE
50 3 Igor GODI
a75f0f5 pb sur permission fluxEnvole.php si en mode conteneur
51 3 Igor GODI
87b1d5f Supression du css dans la reponse
52 3 Igor GODI
c114261 Correction sur le fluxEnvole.php pour le badge
53 3 Igor GODI
869b655 Changement des droits/owners de fluxEnvole.php en postservice
54 3 Igor GODI
58aa7ca Ajout de fluxEnvole (badge CDT) dans tmpl
55 3 Igor GODI
5074af3 montée de version 4937
56 3 Igor GODI
63662a8 patch d'initialisation
57 3 Igor GODI
7708314 netoyage de patch
58 3 Igor GODI
c3cf447 prise en compte de la version 4.9.3.7 par le script d'installation (ref #5371)
59 3 Igor GODI
b40ac89 ajout des sources de la version 4.9.3.7 (ref #5371)
60 3 Igor GODI
c9139a8 option apache pour prise en compte htaccess
61 3 Igor GODI
aca734a nouveau patch
62 3 Igor GODI
................
63 3 Igor GODI
</pre>
64 3 Igor GODI
65 1 Igor GODI
Dans le journal on relève 3 points :
66 4 Igor GODI
# Les sources téléchargées de la version précédente (4937) : *b40ac89* ajout des sources de la version 4.9.3.7 (ref #5371)
67 4 Igor GODI
# Les sources téléchargées de la version à mettre à jour (4944) : *d43fe43* Sources téléchargées de la 4944
68 4 Igor GODI
# Les sources patchées envole de la version précédente (4937 adapatée à envole) : *216e426* Ajoute sondes pour l'espace consultation prof et élève
69 1 Igor GODI
70 4 Igor GODI
h2. Recherche du travail à réaliser pour monter de version :
71 4 Igor GODI
72 7 Igor GODI
*Note : on travaille dans la branche patch du dépot*
73 5 Igor GODI
Ce travail permet de construire un fichier ods (ou xls) qui nous donnera le travail a effectuer sur les fichiers (voir fichier téléchargeable en bas de cette page).
74 1 Igor GODI
75 5 Igor GODI
1: On liste les fichiers qui ont été modifiés pour Envole dans la version précedente
76 5 Igor GODI
<pre>
77 8 Igor GODI
$ git diff b40ac89 216e426 --name-only > liste-patch-envole.txt
78 5 Igor GODI
</pre>
79 5 Igor GODI
80 5 Igor GODI
2: On liste les fichiers qui ont été modifiés entre les 2 versions originales (UPSTREAM)
81 5 Igor GODI
<pre>
82 8 Igor GODI
$ git diff b40ac89:src/cdt-4937/ d43fe43:src/cdt-4944/ --name-only > liste-modif-upstream.txt
83 5 Igor GODI
</pre>
84 5 Igor GODI
85 5 Igor GODI
3: Mise en place de la feuille ods (xls)
86 5 Igor GODI
* Créer un nouveau document de type feuille de calcul
87 5 Igor GODI
* Recopier dans la colonne A le contenu du fichier liste-patch-envole.txt
88 5 Igor GODI
* Recopier dans la colonne B le contenu du fichier liste-modif-upstream.txt
89 1 Igor GODI
* A l'aide de couper coller des élèments de la colonne A, mettre en concordance le nom des fichiers.
90 9 Igor GODI
* Un fois ce travail réalisé, on observe 3 cas de figure :
91 6 Igor GODI
** *Fichiers uniquements présents en colonne B* : sont mis à jour dans la version originale mais non modifiés pour Envole. Dans ce cas rien n'est à faire.
92 6 Igor GODI
** *Fichiers uniquements présents dans la colonne A* : il s'agit des fichiers 
93 1 Igor GODI
*** modifiés pour Envole mais qui n'ont pas subit de modification dans la version originale
94 1 Igor GODI
*** ou ajoutés pour les besoins d'Envole et qui n'existent pas dans la version originale.
95 6 Igor GODI
Dans ce cas une simple copie de ces fichiers depuis l'ancienne version patchée dans src/cdt-4937 vers le dossier src/cdt-4944
96 6 Igor GODI
** *Fichiers présents dans les 2 colonnes* : dans ce cas, on doit patcher manuellement chaque fichier, il existe 2 méthodes :
97 8 Igor GODI
*** _La plus courante_ : on regarde ce qui a été modifié pour Envole de l'ancienne version (git diff b40ac89 216e426 src/cdt-4937/chemin/fichier)  et on modifie le fichier dans src/cdt-4944
98 10 Igor GODI
*** _La moins courante_ mais utile si le patch Envole apporte beaucoup de modification par rapport à la modification de version originale : on recopie l'ancienne version du fichier patché dans src/cdt-4937 vers le dossier src/cdt-4944, on regarde ce qui a été modifié dans les versions originales (git diff b40ac89:src/cdt-4937/dossier/fichier d43fe43:src/cdt-4944/dossier/fichier) et on modifie le fichier dans src/cdt-4944
99 4 Igor GODI
100 4 Igor GODI
h2. Traitement de la base de données
101 4 Igor GODI
102 4 Igor GODI
A faire comme d'habitude :
103 11 Igor GODI
* soit il existe un script dans le code de l'appli :
104 11 Igor GODI
** On le lance via sharenvole.
105 11 Igor GODI
** On le lance en postservice (ligne de commande ou curl -k) ou posttemplate (script en ligne de commande uniquement)
106 11 Igor GODI
* On génère un patch sql en réalisant un différentiel entre un dump SQL de la base avant installation et d'un dump SQL après l'installation et le process de maj de l'application : 
107 11 Igor GODI
** Méthode 1 : on compare les 2 dumps (à l'aide de l'outil diff par exemple). Cette méthode peut s'avérer rébarbative.
108 11 Igor GODI
** Méthode 2 : on utilise un outil permettrant de "macher le boulôt" comme mysql-diff :
109 11 Igor GODI
*** Le télécharger sur [[https://bitbucket.org/stepancheg/mysql-diff/downloads/mysql-diff-0.3.tar.gz]]
110 11 Igor GODI
*** Le décompacter
111 11 Igor GODI
*** Pour le lancer : monchemin/mysql-diff/bin/mysql-diff dump-avant-install.sql dump-après-install.sql
112 11 Igor GODI
*** mysql-diff génère les requêtes SQL à intégrer dans les scripts de mise à jour, ce script a cependant quelques petites imperfections :
113 11 Igor GODI
**** Ne gère pas les AFTER dans les ALTER TABLE ADD COLUMNS....
114 11 Igor GODI
**** N'aime pas du tout les vues.
115 11 Igor GODI
**** *_Le troisième point : je ne sais plus : TODO_*