Projet

Général

Profil

GitMonteeVersion » Historique » Version 17

Igor GODI, 15/05/2014 14:23

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