La fusion SVN a fusionné des éléments supplémentaires

Je viens de faire une fusion en utilisant quelque chose comme :

svn merge -r 67212:67213 https://my.svn.repository/trunk .

Je n'avais que 2 fichiers, dont un simple ChangeLog. Plutôt que de simplement fusionner mes modifications ChangeLog, il a en fait récupéré les miennes ainsi que certaines précédentes qui n'étaient pas dans la destination ChangeLog. J'ai remarqué qu'il y avait un conflit lorsque j'ai exécuté --dry-run, j'ai donc mis à jour ChangeLog, et il y avait toujours un conflit (et j'ai vu le conflit quand j'ai fait la fusion proprement dite).

J'ai ensuite différé sur le fichier à partir duquel je fusionnais :

svn diff -r 67212:67213 ChangeLog

Et je ne vois que les changements que j'avais apportés, donc je sais que les changements supplémentaires n'ont pas été inclus d'une manière ou d'une autre.

Cela me fait craindre que la fusion ne se contente pas de prendre ce que j'ai changé, ce à quoi je m'attendais. Quelqu'un peut-il expliquer ce qui s'est passé ?

MISE À JOUR : En réponse à NilObject :

Donc, j'ai 2 fichiers modifiés, seul ChangeLog est pertinent, l'autre bien fusionné. Lorsque je vais à la caisse de mon coffre habituel, j'exécute la commande diff ci-dessus et je vois :

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67212)
+++ ChangeLog   (revision 67213)
@@ -1,3 +1,7 @@
+2008-08-06  Mike Stone  <myemail>
+
+   * changed_file: Details.
+
 2008-08-06  Someone Else  <their_email>

    * theirChanges: Details.

Après ma fusion des modifications précédentes, le diff de ChangeLog ressemble à ceci :

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67215)
+++ ChangeLog   (working copy)
@@ -1,3 +1,14 @@
+<<<<<<< .working
+=======
+2008-08-06  Mike Stone  <myemail>
+
+   * changed_file: Details.
+
+2008-08-06  Someone Else  <their_email>
+
+   * theirChanges: Details.
+
+>>>>>>> .merge-right.r67213
 2008-08-05  Someone Else2  <their2_email>

    * olderChange: Details.

Notez que l'entrée qui a été insérée de manière incorrecte n'était pas dans le fichier avec lequel je la fusionne, mais ce n'était pas l'une de mes modifications et n'aurait pas dû être fusionnée de toute façon. C'était facile à corriger (en supprimant les lignes supplémentaires qui ne faisaient pas partie de mes modifications), mais cela me fait toujours craindre la fusion automatique dans SVN.

请先 登录 后评论

2 réponses

NilObject

Il n'y a pas vraiment assez d'informations pour continuer ici.

svn merge -r 67212:67213 https://my.svn.repository/trunk .

fusionnera tous les fichiers modifiés dans la révision 67212 dans le dossier /trunk du référentiel et les fusionnera dans votre répertoire de travail actuel. Si vous le faites :

svn log -r 67212

Quels fichiers affiche-t-il modifié ? Merge ne tirera que les modifications du premier argument et les appliquera au second. Il ne se télécharge pas sur le serveur dans le premier argument.

Si cela ne répond pas à votre question, pourriez-vous publier plus de détails sur ce qui se passe exactement ?

请先 登录 后评论
Cebjyre

Cela n'arrive qu'en cas de conflits - en gros, svn a essayé de fusionner le changement, mais (en gros) a vu le changement comme :

Ajouter

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

avant

2008-08-06  Someone Else  <their_email>

Et il n'a pas pu trouver la ligne Quelqu'un d'autre lors de la fusion, donc j'ai mis ce morceau dans le contexte lors de la mise en conflit. S'il s'agissait d'une fusion non conflictuelle, seuls les changements attendus auraient été appliqués.

请先 登录 后评论