Me puede estar perdiendo algo, pero cuando he usado svn merge, siempre he tenido que obtener los números de revisión correctos si quería que funcionaran correctamente.
lo tanto, si ramificada (o la última fusionada) en la revisión 100, el tronco se encuentra actualmente en 200, y desea fusionar los cambios de la tronco en ella, a continuación, en el directorio de trabajo rama que hace:
svn merge -r 100:200 trunkURL
Entonces creo que verá un conflicto, que usted resolverá y controlará. Hace una cosa similar en el directorio de trabajo de la troncal para fusionar desde su rama de nuevo en la cajuela.
svn merge sin -r diffs las dos ubicaciones que especifica y aplica que difieren en el directorio de trabajo. Así que especulo que lo que sucedió es que no hay conflicto, porque tu directorio de trabajo coincide con el jefe de la sucursal. Por lo tanto, la diferencia entre el encabezado de la rama y el encabezado del troncal se puede aplicar a su directorio de trabajo sin ningún problema. Esto no es lo que quiere hacer: todo lo que hace es cambiar su directorio de trabajo para que coincida con el tronco. Intente hacer otro cambio en la rama, regístrese y repita el proceso. Si la combinación deshace ese cambio (porque no está en el enlace troncal), entonces estoy en lo cierto acerca de esta forma de combinación de svn, pero como digo, no la he usado.
[Editar: antes de la versión 1.5 SVN ...]
directorios de trabajo y las ramas no son la misma cosa en el SVN, y molesto, ya que es, usted tiene que dar cuenta de las diferencias. SVN necesita más información para hacer la fusión de sucursal que desea, que para hacer una actualización o un checkin, porque afaik no tiene en cuenta automáticamente dónde se produjo la bifurcación en la forma en que siempre representa el lugar donde se ha desprotegido un directorio de trabajo. Estoy seguro de que hay una razón para eso, simplemente no sé con certeza de qué se trata: posiblemente porque svn copy es para más cosas que solo ramas.
[Editar ... pero según el comentario de Joshua McKinnon a esta respuesta, a partir de 1.5 svn admite fusiones de ramas adecuadas, que hacen lo que quieras automáticamente.Especifique la URL desde la que se está fusionando y ejecute el comando en el directorio de trabajo de lo que sea que se esté fusionando. Así que en este caso, intente
svn merge trunkURL
y debería ver el conflicto. Puede que tenga que volver el directorio de trabajo en primer lugar.]
Entonces 1) ramificó 2) modificó la línea X a "abc" en el tronco 3) cambió a la rama 4) modificó la línea X a "def" en la rama 5) se fusionó? ¿Cuál fue el contenido de la línea X antes de modificarlo a "abc"? –
supongo que habría una diferencia de versión en mi oficina b/w mi cliente svn y el servidor svn, ya que recuerdo que recientemente actualicé mi versión de svn a 1.5 y eso no sucedió en el servidor donde existen las repos .. entonces el hecho de que no estaba recibiendo conflictos, puede ser el resultado de la versión diff. – ashishsony