J’ai lu de la documentation et des blogs sur la différence entre fusionner une série de révisions et réintégrer, mais je n’ai rien compris.
Quelle est la différence dans la fusion si je choisis une ou l’autre manière de fusionner d’une twig à l’autre? Pourquoi fusionner une série de révisions ne fonctionne pas dans certains cas, mais la réintégration réussit à fusionner la twig en tronc?
D’une part, la manière dont SVN calcule les différences à appliquer est différente entre les deux méthodes. Normalement, lorsque vous appliquez une plage de révisions X à Y à partir d’une jonction à la twig, par exemple, SVN calcule les différences entre les révisions de X à Y dans la jonction et les applique à la twig. Vous pouvez également faire la même chose dans l’autre sens, en appliquant les modifications de la twig au tronc de cette façon.
Lorsque vous réintégrez une twig dans le tronc, SVN effectue un autre type de calcul. Au lieu de calculer la différence entre les révisions X à Y dans une twig et d’appliquer ces modifications au tronc, SVN calcule simplement la différence entre la twig entière et le tronc. En supposant que vous ayez fait preuve de diligence pour garder la twig à jour avec les modifications apscopes au tronc, la différence entre le calcul de réintégration entre le tronc et la twig sera exactement toutes les modifications apscopes à la twig qui ne sont pas encore dans le coffre.
De la documentation SVN 1.6 (Réintégration d’une twig):
Lors de la fusion de votre twig avec le tronc, cependant, les mathématiques sous-jacentes sont très différentes. Votre twig de fonctions est maintenant un mélange de modifications de lignes de réseau dupliquées et de modifications de twigs privées, de sorte qu’il n’ya pas de plage de révision contiguë simple à copier. En spécifiant l’option
--reintegrate
, vous demandez à Subversion de ne répliquer que les modifications propres à votre twig. (Et en fait, cela se fait en comparant la dernière arborescence avec la dernière arborescence: la différence qui en résulte est exactement celle de votre twig!)
Je ne suis pas tout à fait sûr (j’ai oublié au fil des ans), mais je pense que dans les versions précédentes de SVN (comme avant 1.5?), Il n’y avait pas d’option de suivi de fusion et de réintégration de twig. une twig terminée dans le tronc, vous deviez le faire manuellement en utilisant la méthode de plage de révisions à la place. J’essaie de regarder cela dans les docs, mais je n’ai pas encore trouvé de référence à ce sujet.
Voir aussi Re: Pourquoi --reintegrate
est- --reintegrate
nécessaire pour la fusion de svn 1.5? , qui a été souligné dans ce commentaire .
reintegrate est destiné à être utilisé lorsque vous travaillez sur une twig de fonctionnalité et que vous avez terminé. L’étape suivante devrait être la suppression de la twig. Avant de réintégrer, vous devez fusionner la destination (le plus souvent la ligne principale) avec la twig à l’aide de la fusion “plage de révisions” pour fusionner toutes les révisions admissibles à la twig. Ceci est décrit légèrement au-dessus du paragraphe de réintégration .
La “fusion des révisions” est destinée aux révisions de sélection des cerises qui doivent être dirigées vers une twig donnée, par exemple pour corriger des bogues dans une twig de publication stable.
–reintegrate devrait être la valeur par défaut; S’il existe une raison quelconque pour laquelle vous souhaitez faire une fusion de synchronisation différente de –reintegrat, ils peuvent simplement fournir un –sync à la place. – réintégrer est ce que vous voudriez presque tout le temps de toute façon, sauf dans les cas où vous voulez choisir. (Ce ne sont que mes 2 centimes – je ne me considère pas comme un expert en fusion, et je ne comprends pas pourquoi leur calcul de synchronisation serait différent de leurs mathématiques de réintégration) – quand je fusionne, je veux presque toujours la twig source, qui n’a pas encore été fusionnée dans la twig cible …