SVN - Suivi de branche avec svnmerge (Mini Howto-FR)
svnmerge != svn merge
svn merge
est une commande intégrée à SVN
svnmerge
est un petit outil pratique (script python) pour faciliter la gestion de branches avec SVN.
Que fait svnmerge
:
- garde la trace des révisions déjà fusionnées
- permet de choisir les révisions à fusionner
- permet de bloquer des révisions (pour ne jamais les fusionner)
- autorise le retour arrière sur révision
- crée des messages clairs pour les commits Initialiser le suivi de branche
Toutes les changements doivent être appliquées (commit) dans la branche avant d’utiliser svnmerge
Exemple : Garder une branche synchronisée avec le trunk
- Fusionner à la main le trunk dans la branche, puis
svnmerge init svn+ssh://dev@url/trunk
svn commit -F svnmerge-commit-message.txt
Ces 3 étapes vont permettre d’enregistrer dans les metadata de la branche qu’elle est synchronisée avec le trunk jusqu’à la révision courante.
Rester synchronisé
svnmerge avail -l
: affiche la liste des révisions qui peuvent être fusionnées en indiquant les messages de commit et les fichiers impactés.
Synchroniser :
svnmerge merge [-r liste de révisions]
: applique les révisions non fusionnées du trunk dans la branche.- résolution des conflits potentiels, comme après un
svn up
svn commit -F svnmerge-commit-message.txt
pour valider
Fusionner dans l’autre sens : de la branche vers le trunk
1ère idée : c’est équivalent à garder le trunk synchronisé avec la branche
MAIS, généralement on veut :
- récupérer toutes les modifications en provenance du trunk dans la branche
- pousser seulement une partie des modifications de la branche dans le trunk
Problème :
- ça nécessite d’identifier le code à fusionner par numéro de révisions. Ce n’est pas toujours simple :(
Conclusion
Idéal pour garder une branche synchronisée avec le trunk, personnellement, je n’utilise pas svnmerge
pour envoyer les modifications de la branche vers le trunk.