svn - two - tortoise merge
SVN fusiona cosas extra fusionadas (2)
Acabo de hacer una fusión usando algo como:
svn merge -r 67212:67213 https://my.svn.repository/trunk .
Solo tenía 2 archivos, uno de los cuales es un simple ChangeLog
. En lugar de solo fusionar mis cambios de ChangeLog
, en realidad sacó los míos más algunos anteriores que no estaban en la ChangeLog
destino. Noté que había un conflicto cuando ejecuté --dry-run, así que actualicé ChangeLog
, y todavía había un conflicto (y vi el conflicto cuando realicé la fusión real).
Luego, diferí en el archivo del que me estaba fusionando:
svn diff -r 67212:67213 ChangeLog
Y veo solo los cambios que había hecho, así que sé que los cambios adicionales no llegaron allí de alguna manera.
Esto me preocupa que la fusión no sea solo tomar lo que cambié, que es lo que esperaba. ¿Alguien puede explicar lo que pasó?
ACTUALIZACIÓN: En respuesta a NilObject:
Entonces, tengo 2 archivos cambiados, solo ChangeLog es relevante, el otro se fusionó bien. Cuando voy a la comprobación de mi troncal habitual, hago el comando diff arriba y veo:
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.
Después de fusionar los cambios anteriores, la diferencia de ChangeLog se ve así:
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.
Tenga en cuenta que la entrada que se extrajo incorrectamente no estaba en el archivo en el que lo estoy fusionando, pero aún así no fue uno de mis cambios y no debería haber sido fusionada de todos modos. Fue fácil de arreglar (eliminar las líneas adicionales que no formaban parte de mis cambios), pero aún así me preocupa la fusión automática en SVN
.
Esto solo ocurre con conflictos: básicamente, svn intentó fusionar el cambio, pero (en términos generales) vio el cambio como:
Añadir
2008-08-06 Mike Stone <myemail>
* changed_file: Details.
antes de
2008-08-06 Someone Else <their_email>
Y no pudo encontrar la línea de Alguien más mientras realizaba la fusión, por lo que lo puso un poco en contexto al poner en el conflicto. Si fue una fusión no conflictiva, solo se aplicaron los cambios que esperaba.
No hay realmente suficiente información para continuar aquí.
svn merge -r 67212:67213 https://my.svn.repository/trunk .
fusionará los archivos modificados en la revisión 67212 en la carpeta / troncal del depósito y los fusionará en su directorio de trabajo actual. Si lo haces:
svn log -r 67212
¿Qué archivos muestra cambiado? Merge solo extraerá los cambios del primer argumento y los aplicará al segundo. No carga de nuevo al servidor en el primer argumento.
Si esto no responde a su pregunta, ¿podría publicar más detalles sobre qué está sucediendo exactamente?