Bonjour,
J'ai toujours un doute dans ma gestion de conf, j'ai lu quelques posts dessus, mais je n'ai toujours pas la réponse qui me convainc... Ouvrons un petit débat
Bon, je passe outre les outils, actuellement j'utilise SVN, mais c'est une discussion générale sur l'organisation des branches (même si certains pratiques sont peut-être plus adaptées à certains outils, à voir plus tard)
Soit un petit projet.
Voilà actuellement comment je procède:
L'avantage que j'y vois:trunk (mon code stable)
|-> devel (une branche pour réunir les développements)
|----> devel_bug1
|----> devel_ajoutfonction_de_rodriguez
|----> devel_...
|-> release1 (par ex v1.0 du 01/01/2014 - correspond à un tag)
|-> demo1 (parx ex demo du 15/12/2013 - correspond à un tag)
- la branche devel fait un peu office d'intégration, toutes ses branches dérivées (devel_bug1, devel_ajoutfonction_de_rodriguez, ...) sont mergées dedans
- on commit les sous-dev dans devel pour que ses copains intègrent les modifs, et on synchronise son sous-devel à partir de devel : le trunk ne bouge pas encore
- quand tous les developpements de chacun sont op, et fonctionnent bien ensemble dans devel, on peu merger dans le trunk => le trunk est (relativement ) stable
Les problèmes:
- trop de merge : il faut merger les sous-devel dans devel, puis devel dans trunk
- devel et trunk peuvent être très désynchronisé pendant un moment, le merge peut souvent être laborieux (avec svn 7 en tout cas)
Je crois savoir que normalement, on branche directement à partir du trunk. Comme ça il n'y a qu'un niveau de merge.
Mais ça veut dire que pour ques ses potes se synchronisent sur les fix/improve de chacun, il faut comitter dans trunk directement => à ce moment le trunk n'est plus vraiment stable
=> ce à quoi on peut me répondre, la version stable est le tag de la dernière release
=> ce à quoi je pourrai répondre, et si on fait pas soucvent de release ?
Merci pour vos avis/eclaircissement/pratiques
Partager