49 votes

Réintégration des branches de Subversion dans la v1.6

Par cette vieille question Avec SVN 1.5, réintégrer une branche plusieurs fois est problématique et doit être évité.

Il y a eu des rumeurs selon lesquelles "c'est un problème connu, qui devrait être corrigé dans le SVN 1.6". Était-ce le cas ? Est-il corrigé ? Puis-je réintégrer plusieurs fois ?

56voto

Andres Jaan Tack Points 9929

Pour fusionner une branche sujet dans le coffre à plusieurs reprises : Faites ce qui suit sur chaque fusion.

  1. svn merge --reintegrate <topic> <trunk> comme vous le feriez normalement. ( => rM )
  2. svn merge --record-only -c M ^/<trunk> <topic> . Notez le record-only option.

L'étape 2 indique essentiellement à la branche topic de considérer le commit de fusion (révision M (depuis l'étape 1) une partie de son historique. Cette fusion-révision est celle qui cause habituellement des problèmes lors de la réintégration ; svn essaie d'annuler rM en intégrant sujet une deuxième fois.

Donc, la réintégration répétée fonctionne, mais pas automatiquement :)

J'ai fini par trouver cette solution grâce à une message de validation éclairant pour les sources svn et la correspondance test (recherchez "def multiple_reintegrates"). C'est une "astuce" découverte et utilisée par svn-devs avec les versions actuelles. Elle a même été ajoutée à une documentation plus récente . Le résultat n'est toujours pas aussi bon que les propriétés de fusion d'un DVCS, mais il est au moins fonctionnel.

Le seul gros inconvénient (selon une problème ouvert en date du 2 juin 2010), c'est qu'apparemment la svn log -g La sortie est désordonnée. Je suppose que c'est le risque.

2voto

bahrep Points 8212

Si, vous le pouvez. Le problème que vous posez a été résolu dans Subversion 1.8.

A partir de SVN 1.8, --reintegrate L'option est déprécié et les fusions de réintégration sont maintenant effectuées automatiquement (ou automatiquement :) ). Voir Notes de publication de Subversion 1.8 et lire les mises à jour SVNBook 1.8 | Réintégrer une branche chapitre :

Si vous choisissez de ne pas supprimer votre branche après l'avoir réintégrée dans la base de données de l tronc, vous pouvez continuer à effectuer des fusions synchronisées à partir du tronc et ensuite réintégrer la branche à nouveau. Dans ce cas, seuls les changements effectués sur votre branche votre branche après la première réintégration sont fusionnées dans le tronc.

...

Seule Subversion 1.8 supporte cette réutilisation d'une branche de fonctionnalité. Les versions antérieures de versions antérieures nécessitent une manipulation spéciale avant qu'une branche de fonctionnalité puisse être réintégrée plus d'une fois. Voir la version antérieure de ce chapitre pour plus d'informations : http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

IMPORTANT : Vous devez mettre à jour votre client et votre serveur Subversion si vous utilisez encore Subversion 1.7 ou plus ancien. La version actuelle et la meilleure de SVN est la 1.9 depuis l'année 2016. Il n'y a aucune raison réelle d'utiliser de très anciennes versions de Subversion telles que 1.5, 1.6 ou même 1.7. Il y a eu de nombreuses améliorations du côté client et serveur depuis la version 1.6 !

1voto

sbi Points 100828

Bien que la version 1.6 ait effectivement corrigé les problèmes de suivi des fusions, je ne pense pas que vous puissiez réutiliser une branche intégrée.

Mais ce n'est pas un problème. Puisque la branche a été entièrement intégrée dans le tronc, il suffit de la supprimer et de créer une nouvelle branche (avec le même nom) à sa place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X