Al fusionar un par de ramas (usando SVN 1.6.1) donde se ha agregado un archivo en ambas ramas (y luego se trabajó en esas ramas separadas), obtengo uno de los nuevos conflictos de árbol:
C foo.txt
> local obstruction, incoming add upon merge
Necesito los cambios de ambas ramas, pero el conflicto del árbol no me da los archivos habituales .working, .merge-left y .merge-right, lo cual es comprensible debido a la naturaleza del conflicto. Hay bastantes de estos conflictos, y algunos en los que se ha eliminado el mismo archivo en cada rama, pero son fáciles de resolver.
¿Cómo puedo resolver este problema? El libro de frijoles rojos de SVN (para 1.6) no cubre esta situación.
fuente
Encontré una publicación que sugiere una solución para eso . Está a punto de ejecutarse:
que reclamará los archivos de la versión local como correctos.
Puede ejecutarlo para catálogos de un solo archivo o de proyectos completos.
fuente
alias mtc='stat | awk "BEGIN { FS=\" \" } /^.{6}C/ { print \$NF }"'
luego puedo usar esto como argumento para el comando de resolución, así:svn resolve --accept working $(mtc)
svn resolve --accept working path/index.html
svn resolve --accept base
fuente
Me las arreglé para encajarme bastante a fondo tratando de seguir el consejo de user619330 anterior. La situación era: (1): había agregado algunos archivos mientras trabajaba en mi rama inicial, branch1; (2) Creé una nueva rama, branch2 para un mayor desarrollo, bifurcándola desde el tronco y luego fusionando mis cambios de branch1 (3) Un compañero de trabajo había copiado mis mods de branch1 a su propia rama, agregó más modificaciones, y luego se fusionó de nuevo con el tronco; (4) Ahora quería fusionar los últimos cambios del tronco en mi rama de trabajo actual, branch2. Esto es con svn 1.6.17.
La fusión tenía conflictos de árbol con los nuevos archivos, y quería la nueva versión del tronco donde diferían, así que de una copia limpia de branch2, hice una eliminación de svn de los archivos en conflicto, cometí estos cambios de branch2 (creando así un temporal versión de branch2 sin los archivos en cuestión), y luego hice mi fusión desde el tronco. Hice esto porque quería que el historial coincidiera con la versión del tronco para no tener más problemas más adelante al intentar fusionarme con el tronco. La fusión fue bien, obtuve la versión del tronco de los archivos, svn st muestra todo bien, y luego llegué a más conflictos de árbol mientras intentaba confirmar los cambios, entre la eliminación que había hecho antes y la adición de la combinación. Hice un svn que resolviera los conflictos a favor de mi copia de trabajo (que ahora tenía la versión troncal de los archivos), y logré que se comprometiera.
Bueno no. Una actualización de otra copia de branch2 resultó en la versión anterior de los archivos (fusión previa al tronco). Así que ahora tengo dos copias de trabajo diferentes de branch2, supuestamente actualizadas a la misma versión, con dos versiones diferentes de los archivos, ¡y ambas insisten en que están completamente actualizadas! Verificar una copia limpia de branch2 resultó en la versión anterior (anterior al tronco) de los archivos. Los actualizo manualmente a la versión del tronco y confirmo los cambios, vuelvo a mi primera copia de trabajo (desde la que había enviado los cambios del tronco originalmente), trato de actualizarlo y ahora obtengo un error de suma de comprobación en los archivos en cuestión. Elimine el directorio en cuestión, obtenga una nueva versión a través de la actualización, y finalmente tengo lo que debería ser una buena versión de branch2 con los cambios en el tronco. Espero. Desarrollador de advertencia.
fuente