Projet

Général

Profil

Bzr depuis git » Historique » Version 3

Benjamin Bohard, 30/04/2014 09:27

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 3 Benjamin Bohard
h2. Prérequis
44 3 Benjamin Bohard
45 3 Benjamin Bohard
bzr et bzr-fast-import doivent être installés.
46 3 Benjamin Bohard
47 1 Daniel Dehennin
h2. Plugin git-bzr
48 1 Daniel Dehennin
49 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.
50 1 Daniel Dehennin
51 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:
52 1 Daniel Dehennin
53 1 Daniel Dehennin
<pre>
54 1 Daniel Dehennin
moi@work:~$ mkdir bin src
55 1 Daniel Dehennin
moi@work:~$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
56 1 Daniel Dehennin
moi@work:~$ cd src && git clone git://github.com/termie/git-bzr-ng.git
57 1 Daniel Dehennin
moi@work:~$ cd ~/bin && ln -s ~/src/git-bzr-ng/git-bzr
58 1 Daniel Dehennin
</pre>
59 1 Daniel Dehennin
60 1 Daniel Dehennin
h2. Exemple réel de suivi d’un projet bzr
61 1 Daniel Dehennin
62 1 Daniel Dehennin
Ces explications sont basés sur le suivi de l’outil "CDimage":http://dev-eole.ac-dijon.fr/projects/cdimage.
63 1 Daniel Dehennin
64 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.
65 1 Daniel Dehennin
66 1 Daniel Dehennin
Les branches sont donc les suivantes:
67 1 Daniel Dehennin
68 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 ;
69 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 ;
70 1 Daniel Dehennin
* master: Branche de développement EOLE.
71 1 Daniel Dehennin
72 1 Daniel Dehennin
h3. Mise en place du suivi des modifications upstream
73 1 Daniel Dehennin
74 1 Daniel Dehennin
Si vous souhaitez suivre directement la version upstream maintenue dans un dépôt bzr, il faut effectuer les actions suivantes:
75 1 Daniel Dehennin
76 1 Daniel Dehennin
h3. Clone du dépôt EOLE
77 1 Daniel Dehennin
78 1 Daniel Dehennin
<pre>
79 1 Daniel Dehennin
moi@work:~/src/$ git clone http://dev-eole.ac-dijon.fr/git/cdimage
80 1 Daniel Dehennin
Cloning into cdimage...
81 1 Daniel Dehennin
moi@work:~/src/$ cd cdimage && git checkout -b moi/test/bzr
82 1 Daniel Dehennin
</pre>
83 1 Daniel Dehennin
84 1 Daniel Dehennin
Il est possible de partir d’un dépôt vide :
85 1 Daniel Dehennin
86 1 Daniel Dehennin
<pre>
87 1 Daniel Dehennin
moi@work:~/src/$ mkdir projet && cd projet
88 1 Daniel Dehennin
moi@work:~/src/projet$ git init
89 1 Daniel Dehennin
</pre>
90 1 Daniel Dehennin
91 1 Daniel Dehennin
h3. Importer le dépôt bzr upstream dans une branche git spécifique:
92 1 Daniel Dehennin
93 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 :
94 1 Daniel Dehennin
95 1 Daniel Dehennin
<pre>
96 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git bzr import http://people.canonical.com/~cjwatson/bzr/cdimage/mainline ubuntu
97 1 Daniel Dehennin
Branched 867 revision(s).hing revisions:Finishing stream:Done 9846/98469846
98 1 Daniel Dehennin
14:29:38 Calculating the revisions to include ...
99 1 Daniel Dehennin
14:29:38 Starting export of 956 revisions ...
100 1 Daniel Dehennin
14:29:43 Exported 956 revisions in 0:00:04
101 1 Daniel Dehennin
</pre>
102 1 Daniel Dehennin
103 1 Daniel Dehennin
<pre>
104 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git branch
105 1 Daniel Dehennin
  bzr/ubuntu
106 1 Daniel Dehennin
  master
107 1 Daniel Dehennin
* moi/test/bzr
108 1 Daniel Dehennin
  ubuntu
109 1 Daniel Dehennin
</pre>
110 1 Daniel Dehennin
111 1 Daniel Dehennin
*NB*: si vous partez d’un dépôt vide, il faut créer la branche master:
112 1 Daniel Dehennin
<pre>
113 2 Daniel Dehennin
moi@work:~/src/projet()$ git checkout -b master ubuntu
114 2 Daniel Dehennin
Checking out files: 100% (1291/1291), done.
115 2 Daniel Dehennin
Already on 'master'
116 1 Daniel Dehennin
moi@work:~/src/projet(master)$ git branch
117 1 Daniel Dehennin
  bzr/ubuntu
118 1 Daniel Dehennin
* master
119 1 Daniel Dehennin
  ubuntu
120 1 Daniel Dehennin
</pre>
121 1 Daniel Dehennin
122 1 Daniel Dehennin
h3. Mettre à jour le suivi du dépôt upstream
123 1 Daniel Dehennin
124 1 Daniel Dehennin
<pre>
125 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git bzr sync bzr/ubuntu
126 1 Daniel Dehennin
http://people.canonical.com/~cjwatson/bzr/cdimage/mainline is permanently redirected to http://people.canonical.com/~cjwatson/bzr/cdimage/mainline/
127 1 Daniel Dehennin
14:31:51 Calculating the revisions to include ...
128 1 Daniel Dehennin
14:31:51 Starting export of 956 revisions ...
129 1 Daniel Dehennin
14:31:51 Exported 956 revisions in 0:00:00
130 1 Daniel Dehennin
</pre>
131 1 Daniel Dehennin
132 1 Daniel Dehennin
h3. Intégrer les modifications upstream à une branche locale
133 1 Daniel Dehennin
134 1 Daniel Dehennin
<pre>
135 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git merge bzr/ubuntu
136 1 Daniel Dehennin
Updating 5aa84e2..ba4f520
137 1 Daniel Dehennin
[...]
138 1 Daniel Dehennin
</pre>
139 1 Daniel Dehennin
140 1 Daniel Dehennin
h3. Paramètre de configuration spécifique à git-bzr
141 1 Daniel Dehennin
142 1 Daniel Dehennin
<pre>
143 1 Daniel Dehennin
moi@work:~/src/cdimage(moi/test/bzr)$ git config -l
144 1 Daniel Dehennin
[...]
145 1 Daniel Dehennin
bzr.ubuntu.bzr=bzr/ubuntu
146 1 Daniel Dehennin
bzr.bzr/ubuntu.upstream=http://people.canonical.com/~cjwatson/bzr/cdimage/mainline
147 1 Daniel Dehennin
</pre>