Академический Документы
Профессиональный Документы
Культура Документы
Sommaire
But de ce document..............................................................................................................................4 Vocabulaire...........................................................................................................................................4 Workflow..............................................................................................................................................5 Mise en pratique...................................................................................................................................6 Commandes ...................................................................................................................................6 Exemple..........................................................................................................................................7 Bibliographie........................................................................................................................................9
But de ce document
Bazaar est un outil puissant mais pas toujours trs intuitif. Ceci est un document de rfrence destin aux dveloppeurs concernant l'utilisation de bazaar au sein du projet Ispees. Il couvre la fois l'aspect WorkFlow ( l'utilisation qui est faite de bazaar dans le projet ) et la mise en pratique.
Vocabulaire
Avant de commencer un peu de vocabulaire est ncssaire :
Rvision : Une rvision est un instantan de l'tat d'une arborescence de fichiers et de rpertoires, y compris leur contenu et la forme. Une rvision a aussi des mtadonnes qui lui sont associs, notamment:
qui a envoy la rvision quand un message expliquant les changements les rvision parentes partir desquelles celle ci t produite
Rpertoire de travail (Working Tree) : Un rpertoire de travail est une rpertoire contrl par bazaar contenant des fichiers que l'utilisateur peut diter. Un rpertoire de travail est associ une branche. Beaucoup de commandes utilisent le rpertoire comme leur contexte, par exemple, commit cre une nouvelle rvision en utilisant le contenu courant du rpertoire. Branche : Dans le cas le plus simple, une branche est une srie ordonne de rvisions. Les branches peuvent tre spares puis fusionnes de nouveau plus tard, formant un graphe de rvisions. Exemple tir du dveloppement de bazaar :
Chaque ligne reprsente une branche. On peut voir qu'une copie de la branche principale est faire la rvision 1543 (ligne verte) quelques modifications sont faites a la fois dans la branche principale et dans la branche drive (point gris et 2 points verts) puis la branche drive est fusionne la branche principale (rvision 1545).
Workflow
Le projet Ispees utilise un workflow dcentralis avec une branche principale commune.
Lors d'une correction de bug / criture d'une nouvelle fonctionnalit etc, les dveloppeurs font une copie de la branche principale de dveloppement, font leurs modifications (correction du bug, cration de la nouvelle fonctionnalit) sur leur branche sans toucher la branche principale, puis fusionnent leur branche la branche principale quand ils ont fini. Une branche locale peut bien entendu contenir plusieurs rvisions. L'intrt est de regrouper les modifications par thme et de garder un historique des modifications cohrent sur le projet. De plus cela permet chaque dveloppeur de se concentrer sur son travail sans tre drang par les commit des autres. Un exemple de l'intret de cette mthode. Avec un systme classique :
107: 106: 105: 104: 103: 102: 101: Add Fix Fix Add Add Add Add documentation for Y bug found in testing Y bug found in testing X code for Y documentation for X code and tests for X tests for Y
Beaucoup plus lisible, chaque modification tant confine dans la branche qui la concerne.
De plus, de faon garder une trace de ce que font les dveloppeurs, les branches drives seront galement envoyes sur le serveur.
Mise en pratique
Commandes
Avant toute utilisation de bazaar dans le cadre du projet il est ncessaire de se logger sur launchpad :
b!r "aunc#$ad%"ogin sebastien%debia
Si les fichiers sont dj prsent en local dans le rpertoire de travail on peut galement ffecteur :
b!r $u"" branc# "$:&is$ees'is$ees'trun( b!r merge
Ce qui a pour effet de rcuprer la branche principale et de la fusionner avec la version prsente dans le rpertoire de travail local. Cette commande peut tre utilise dans le cas d'une branche drive longue qui veut reprendre la version courante de la branche de dveloppement sans perdre les modifications ffectues. Pour crer une nouvelle rvision et l'envoyer sur launchpad :
b!r commit '' )r*e "a nou+e""e r*+ision
Pour envoyer la rvision dans la branche fonctionalitee1 du projet ispees possde par le dveloppeur sebastien-debia :
b!r $us# "$:&sebastien%debia'is$ees'fonciona"itee1
Exemple
2 dveloppeurs (A et B) travaillent sur le projet Ispees. Ils ont tous les deux une version de la branche principale sur leur disque dur dans le rpertoire :
branc#e0rinci$a"e'trun(
Le developpeur A veut travailler sur le module rules. Le developpeur B veut travailler sur le module config.
Developpeur A Il va commencer par crer une branche ddie au dveloppement du module rules. cration d'un rpertoire qui va acceuillir la nouvelle branche :
m(dir branc#e1e+2u"es cd branc#e1e+2u"es
Developpeur B Il va commencer par crer une branche ddie au dveloppement du module config. cration d'un rpertoire qui va acceuillir la nouvelle branche :
m(dir branc#e1e+)onfig cd branc#e1e+)onfig
Puis il rcupre la version actuelle de la branche Puis il rcupre la version actuelle de la branche principale : principale :
b!r branc# "$:&is$ees'is$ees'trun( b!r branc# "$:&is$ees'is$ees'trun(
Le dveloppeur A a termin son travail Le dveloppeur A fusionne sa branche dans la branche principale. Il revient dans le rpertoire de travail de la branche principale (branchePrincipale/trunk)
b!r $u"" 3"$:&is$ees'is$ees'trun(4 b!r u$date b!r merge ' 'branc#e1e+2u"es'trun( '' r*soudre "es conf"its *+entue"s b!r commit b!r $us#
Le dveloppeur B galement Le dveloppeur B fusionne sa branche dans la branche principale. Il revient dans le rpertoire de travail de la branche principale (branchePrincipale/trunk)
b!r $u"" 3"$:&is$ees'is$ees'trun(4 b!r u$date b!r merge ' 'branc#e1e+)onfig'trun( '' r*soudre "es conf"its *+entue"s b!r commit b!r $us#
Si un conflit apparat : le rsoudre l'aide d'un utilitaire tel que meld puis taper en ligne de commande :
b!r reso"+e "efic#ier
puis continuer (bzr commit ...) Si le dveloppeur A veut une version jour de la branche principale il doit juste faire :
cd branc#e0rinci$a"e b!r $u"" b!r u$date
Bibliographie
Documentation de bazaar : http://doc.bazaar-vcs.org/latest/en/user-guide/index.html