Projet

Général

Profil

Bzr depuis git » Historique » Version 1

Daniel Dehennin, 03/11/2011 16:40
Suivi d’un projet bzr depuis git

1 1 Daniel Dehennin
h1. Suivi d’un dépôt bzr depuis git
2 1 Daniel Dehennin
3 1 Daniel Dehennin
L’idée est d’utiliser @git@ tout en suivant les modifications upstream qui sont faites dans un dépôt bzr
4 1 Daniel Dehennin
5 1 Daniel Dehennin
Pour ce faire nous créerons une branche spécifique qui sera un miroir des développements upstream.
6 1 Daniel Dehennin
7 1 Daniel Dehennin
Nous finirons avec les branches suivantes :
8 1 Daniel Dehennin
9 1 Daniel Dehennin
* bzr/upstream: Branche de synchronisation utilisée par "git-bzr":http://github.com/termie/git-bzr-ng, ne doit jamais être modifiée autrement que par l’outil ;
10 1 Daniel Dehennin
* upstream: Branche de synchronisation utilisée par "git-bzr":http://github.com/termie/git-bzr-ng, ne doit jamais être modifiée autrement que par l’outil ;
11 1 Daniel Dehennin
* master: Branche de développement EOLE.
12 1 Daniel Dehennin
13 1 Daniel Dehennin
*Règle №1*: Il ne faut jamais modifier la branche @bzr/upstream@, ni placer dans cette branche.
14 1 Daniel Dehennin
15 1 Daniel Dehennin
La branche @bzr/upstream@ est mise à jours par les commandes *git bzr sync bzr/upstream* et *git bzr pull bzr/upstream* mais l’espace de travail n’est pas mis à jour si la branche courante est @bzr/upstream@ lorsque ces commandes sont invoquées.
16 1 Daniel Dehennin
17 1 Daniel Dehennin
Dans ce cas il faut forcer la mise à jour de l’espace de travail:
18 1 Daniel Dehennin
19 1 Daniel Dehennin
<pre>
20 1 Daniel Dehennin
moi@work:~/src/cdimage(bzr/upstream):$ git reset --hard HEAD
21 1 Daniel Dehennin
</pre>
22 1 Daniel Dehennin
23 1 Daniel Dehennin
Il est possible d’invoquer *git bzr sync bzr/upstream* depuis n’importe quelle branche, seule la branche @bzr/upstream@ sera modifiée, il est ensuite possible de fusionner les modifications dans d’autres branches :
24 1 Daniel Dehennin
25 1 Daniel Dehennin
<pre>
26 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr):$ git bzr sync bzr/upstream
27 1 Daniel Dehennin
15:09:08 Calculating the revisions to include ...
28 1 Daniel Dehennin
15:09:08 Starting export of 960 revisions ...
29 1 Daniel Dehennin
15:09:08 Exported 960 revisions in 0:00:00
30 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr):$ 
31 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr):$ git merge bzr/upstream
32 1 Daniel Dehennin
Updating 5aa84e2..ba4f520
33 1 Daniel Dehennin
[...]
34 1 Daniel Dehennin
</pre>
35 1 Daniel Dehennin
36 1 Daniel Dehennin
La commande *git bzr pull bzr/upstream* n’a d’utilitée que dans la branche @upstream@, elle est équivalente à :
37 1 Daniel Dehennin
38 1 Daniel Dehennin
1. *git bzr pull bzr/upstream*
39 1 Daniel Dehennin
2. *git merge bzr/upstream*
40 1 Daniel Dehennin
41 1 Daniel Dehennin
En dehors de la branche @upstream@, elle n’exécute que la première partie.
42 1 Daniel Dehennin
43 1 Daniel Dehennin
h2. Plugin git-bzr
44 1 Daniel Dehennin
45 1 Daniel Dehennin
Un plugin est nécessaire afin de suivre le dépôt bzr: "bzr-git-ng":http://github.com/termie/git-bzr-ng.
46 1 Daniel Dehennin
47 1 Daniel Dehennin
L’exécutable @git-bzr@ doit se trouver dans le PATH, un répertoir ~/bin est ajouté à celui-ci, il contiendra un lien vers l’exécutable qui pourra ainsi facilement être mis à jour:
48 1 Daniel Dehennin
49 1 Daniel Dehennin
<pre>
50 1 Daniel Dehennin
moi@work:~$ mkdir bin src
51 1 Daniel Dehennin
moi@work:~$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
52 1 Daniel Dehennin
moi@work:~$ cd src && git clone git://github.com/termie/git-bzr-ng.git
53 1 Daniel Dehennin
moi@work:~$ cd ~/bin && ln -s ~/src/git-bzr-ng/git-bzr
54 1 Daniel Dehennin
</pre>
55 1 Daniel Dehennin
56 1 Daniel Dehennin
h2. Exemple réel de suivi d’un projet bzr
57 1 Daniel Dehennin
58 1 Daniel Dehennin
Ces explications sont basés sur le suivi de l’outil "CDimage":http://dev-eole.ac-dijon.fr/projects/cdimage.
59 1 Daniel Dehennin
60 1 Daniel Dehennin
La branche dédié à *upstream* se nomme *ubuntu* afin d’identifier la source, cela peut-être utile lors du suivi de plusieurs branches et/ou dépôt upstream.
61 1 Daniel Dehennin
62 1 Daniel Dehennin
Les branches sont donc les suivantes:
63 1 Daniel Dehennin
64 1 Daniel Dehennin
* bzr/ubuntu: Branche de synchronisation utilisée par "git-bzr":http://github.com/termie/git-bzr-ng, ne doit jamais être modifiée autrement que par l’outil ;
65 1 Daniel Dehennin
* ubuntu: Branche de synchronisation utilisée par "git-bzr":http://github.com/termie/git-bzr-ng, ne doit jamais être modifiée autrement que par l’outil ;
66 1 Daniel Dehennin
* master: Branche de développement EOLE.
67 1 Daniel Dehennin
68 1 Daniel Dehennin
h3. Mise en place du suivi des modifications upstream
69 1 Daniel Dehennin
70 1 Daniel Dehennin
Si vous souhaitez suivre directement la version upstream maintenue dans un dépôt bzr, il faut effectuer les actions suivantes:
71 1 Daniel Dehennin
72 1 Daniel Dehennin
h3. Clone du dépôt EOLE
73 1 Daniel Dehennin
74 1 Daniel Dehennin
<pre>
75 1 Daniel Dehennin
moi@work:~/src/$ git clone http://dev-eole.ac-dijon.fr/git/cdimage
76 1 Daniel Dehennin
Cloning into cdimage...
77 1 Daniel Dehennin
moi@work:~/src/$ cd cdimage && git checkout -b moi/test/bzr
78 1 Daniel Dehennin
</pre>
79 1 Daniel Dehennin
80 1 Daniel Dehennin
Il est possible de partir d’un dépôt vide :
81 1 Daniel Dehennin
82 1 Daniel Dehennin
<pre>
83 1 Daniel Dehennin
moi@work:~/src/$ mkdir projet && cd projet
84 1 Daniel Dehennin
moi@work:~/src/projet$ git init
85 1 Daniel Dehennin
</pre>
86 1 Daniel Dehennin
87 1 Daniel Dehennin
h3. Importer le dépôt bzr upstream dans une branche git spécifique:
88 1 Daniel Dehennin
89 1 Daniel Dehennin
Le nom de la branche ne doit pas entrer en confilt avec une branche locale, j’ai choisi @ubuntu@ pour visualiser qu’il s’agit de la version Ubuntu de l’outil :
90 1 Daniel Dehennin
91 1 Daniel Dehennin
<pre>
92 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git bzr import http://people.canonical.com/~cjwatson/bzr/cdimage/mainline ubuntu
93 1 Daniel Dehennin
Branched 867 revision(s).hing revisions:Finishing stream:Done 9846/98469846
94 1 Daniel Dehennin
14:29:38 Calculating the revisions to include ...
95 1 Daniel Dehennin
14:29:38 Starting export of 956 revisions ...
96 1 Daniel Dehennin
14:29:43 Exported 956 revisions in 0:00:04
97 1 Daniel Dehennin
</pre>
98 1 Daniel Dehennin
99 1 Daniel Dehennin
<pre>
100 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git branch
101 1 Daniel Dehennin
  bzr/ubuntu
102 1 Daniel Dehennin
  master
103 1 Daniel Dehennin
* moi/test/bzr
104 1 Daniel Dehennin
  ubuntu
105 1 Daniel Dehennin
</pre>
106 1 Daniel Dehennin
107 1 Daniel Dehennin
*NB*: si vous partez d’un dépôt vide, il faut créer la branche master:
108 1 Daniel Dehennin
<pre>
109 1 Daniel Dehennin
moi@work:~/src/projet()$ git branch master ubuntu
110 1 Daniel Dehennin
moi@work:~/src/projet(master)$ git branch
111 1 Daniel Dehennin
  bzr/ubuntu
112 1 Daniel Dehennin
* master
113 1 Daniel Dehennin
  ubuntu
114 1 Daniel Dehennin
</pre>
115 1 Daniel Dehennin
116 1 Daniel Dehennin
h3. Mettre à jour le suivi du dépôt upstream
117 1 Daniel Dehennin
118 1 Daniel Dehennin
<pre>
119 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git bzr sync bzr/ubuntu
120 1 Daniel Dehennin
http://people.canonical.com/~cjwatson/bzr/cdimage/mainline is permanently redirected to http://people.canonical.com/~cjwatson/bzr/cdimage/mainline/
121 1 Daniel Dehennin
14:31:51 Calculating the revisions to include ...
122 1 Daniel Dehennin
14:31:51 Starting export of 956 revisions ...
123 1 Daniel Dehennin
14:31:51 Exported 956 revisions in 0:00:00
124 1 Daniel Dehennin
</pre>
125 1 Daniel Dehennin
126 1 Daniel Dehennin
h3. Intégrer les modifications upstream à une branche locale
127 1 Daniel Dehennin
128 1 Daniel Dehennin
<pre>
129 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git merge bzr/ubuntu
130 1 Daniel Dehennin
Updating 5aa84e2..ba4f520
131 1 Daniel Dehennin
[...]
132 1 Daniel Dehennin
</pre>
133 1 Daniel Dehennin
134 1 Daniel Dehennin
h3. Paramètre de configuration spécifique à git-bzr
135 1 Daniel Dehennin
136 1 Daniel Dehennin
<pre>
137 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git config -l
138 1 Daniel Dehennin
[...]
139 1 Daniel Dehennin
bzr.ubuntu.bzr=bzr/ubuntu
140 1 Daniel Dehennin
bzr.bzr/ubuntu.upstream=http://people.canonical.com/~cjwatson/bzr/cdimage/mainline
141 1 Daniel Dehennin
</pre>