Tengo el siguiente problema utilizando la subversión:¿Subversion no fusiona los cambios en archivos renombrados?
Actualmente estoy trabajando en el maletero de mi proyecto y un plan para hacer algo de refactorización (que incluye el cambio de nombre de archivos o mover archivos a diferentes directorios).
Al mismo tiempo, alguien más está trabajando en el mismo proyecto en una sucursal.
En algún momento deseo fusionar los cambios realizados en la rama con el tronco. Eso incluye los cambios realizados en los archivos (en la rama) que han sido renombrados en el enlace troncal.
Hice algunas pruebas y parece que o la subversión no es capaz de seguir estos cambios o me falta algo (que es lo que espero). Probé esto utilizando la siguiente secuencia de comandos (debería funcionar en bash, asume un repositorio SVN en "http://myserver/svn/sandbox"):
svn co http://myserver/svn/sandbox
cd sandbox/
mkdir -p MyProject/trunk MyProject/branches MyProject/tags
cat - <<EOF >MyProject/trunk/FileOne.txt
Test
1
2
EOF
svn add MyProject
svn commit -m "init"
# create a branch
svn copy http://myserver/svn/sandbox/MyProject/trunk http://myserver/svn/sandbox/MyProject/branches/Branch_1 svn copy http://myserver/svn/sandbox/MyProject/trunk http://myserver/svn/sandbox/MyProject/branches/Branch_1
# rename the file
svn move MyProject/trunk/FileOne.txt MyProject/trunk/FileTwo.txt
svn commit -m "renamed file"
svn update
# change the content of FileOne in branch
cat - <<EOF >MyProject/branches/Branch_1/FileOne.txt
Test
2
3
EOF
svn commit -m "changed branch"
# I now try to merge the changes in FileOne back to FileTwo
cd MyProject/trunk/
svn merge -r1:HEAD http://myserver/svn/sandbox/MyProject/branches/Branch_1
# but this yields the following message:
# Skipped missing target: 'FileOne.txt'
Cualquier ayuda es muy apreciada.
Editar: Tal vez el proceso sugerido por mikegrb podría por tanto automatizado primero al generar un mapa de archivos renombrados (Antiguo-> nuevos) desde el comando svn log en el tronco:
svn log -v
------------------------------------------------------------------------
r33 | sme | 2008-10-09 15:17:54 +0200 (Do, 09 Okt 2008) | 1 line
Changed paths:
D /MyProject/trunk/FileOne.txt
A /MyProject/trunk/FileTwo.txt (from /MyProject/trunk/FileOne.txt:31)
resulting map: {FileOne.txt => FileTwo.txt}
Ahora utilice este mapa para cambiar los nombres de archivo en el archivo de parche generado en la sucursal.
original:
Index: FileOne.txt
===================================================================
--- FileOne.txt (.../trunk) (revision 31)
+++ FileOne.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
modificación:
Index: FileTwo.txt
===================================================================
--- FileTwo.txt (.../trunk) (revision 31)
+++ FileTwo.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
sólo una idea, no lo han hecho todavía.
Parece que llevaron este error a la versión 1.8. Lo cual es solo otra forma de decir "todavía no". Desde que ha estado abierto desde 2002, comienza a parecerse más a "nunca". –
@deft_code ¿Ha solucionado este error desde entonces? Creo que puedo experimentar algo similar en este momento. Cambié el nombre de un par de archivos usando la función de cambio de nombre de tortoisesvns, y ahora cuando trato de fusionarme desde el tronco a mi rama (para verificar si se está compilando antes de reintegrarme al tronco) dice "omitido objetivo omitido" – TravisG
@TravisG - el error hace referencia a Es posible que se haya solucionado en 1.8, que puede haber aparecido esta semana (hubo un lanzamiento de git, no estoy seguro de la versión). Todavía estoy en 1.7 yo mismo ... ¿En qué versión estás? –