2008-08-06 17 views
9

que acabo de hacer una fusión usando algo como:SVN fusión se fusionó material extra

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

sólo tenía 2 archivos, uno de los cuales es un simple ChangeLog. En lugar de simplemente fusionar mis cambios ChangeLog, realmente extrajo los míos más algunos anteriores que no estaban en el destino ChangeLog. 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 hice la fusión real).

que luego diffed en el archivo que estaba la fusión de:

svn diff -r 67212:67213 ChangeLog 

y veo sólo los cambios que había hecho, así que sé que los cambios adicionales no llegaron allí de alguna manera.

Esto me preocupa que fusionar no sea solo tomar lo que cambié, que es lo que esperaba. ¿Alguien puede explicar lo que pasó?

ACTUALIZACIÓN: En respuesta a NilObject:

Por lo tanto, tengo 2 archivos cambiados, solamente es relevante registro de cambios, el otro bien fusionada. Cuando voy a mi salida del tronco normal, 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 mi fusión de los cambios anteriores, el diff del 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 la 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 todavía me preocupa la fusión automática en SVN.

Respuesta

2

Esto sólo ocurre con los conflictos - básicamente SVN tratado de combinar el cambio, pero (en términos generales) vio el cambio como:

Añadir

2008-08-06 Mike Stone <myemail> 

* changed_file: Details. 

antes

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 arrojó ese poco en el contexto al poner en el conflicto.Si fue una fusión no conflictiva, solo se aplicaron los cambios que esperaba.

+0

Entiendo por qué es así (cuando se realiza una fusión visual/manual, SVN debe proporcionar un documento de base "Existente" para el lado "suyo", por lo que es la última revisión en sus criterios de fusión), pero es realmente desagradable! (al menos para alguien nuevo en el juego Merge y maravillado por la maravilla de los cherrypickings y otras bondades de fusión) – Tao

0

No hay suficiente información para continuar aquí.

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

se fusionarán los archivos modificados en la revisión 67212 en la carpeta/tronco en el repositorio y fusionarlas en su directorio de trabajo actual. Si lo hace:

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 su pregunta, ¿podría publicar más detalles sobre qué está sucediendo exactamente?

Cuestiones relacionadas