tortoise skipped remains mine conflicts conflicted svn tree-conflict

skipped - tortoise svn resolve conflict



SVN cómo resolver "add local, adding upon update" en una*carpeta*? (5)

En este caso particular, creo que deberá volver a aplicar los cambios locales manualmente. Es decir, crea un archivo de parche (svn diff> mine.patch, o copia archivos en otro lugar), revierte los cambios o resuelve usando los de ellos, luego aplica el parche (o copia los archivos nuevamente). Quizás necesite svn copiar la base de sus archivos nuevamente en la carpeta recreada antes de aplicar sus cambios.

Como dijo zellus, es el lado oscuro de la subversión, y esto es algo que la implementación actual no puede manejar. Por otra parte, borrar una carpeta y volver a agregar un nombre idéntico no suena del todo bien. ¿Qué esperarías que haga la subversión? ¿Qué ocurre si el archivo no se recrea en la carpeta? ¿Qué pasa si su contenido es diferente?

Intenta evitar la situación por completo al no eliminar una carpeta que quieras conservar :)

Aquí está mi escenario:

Supongamos que tenemos un repositorio SVN con el siguiente contenido: myfolder myfolder / file.txt

Ahora creo dos cajas de este repositorio, co1 y co2.

En co1 modificamos file.txt. En co2 nosotros:

  • svn eliminar myfolder
  • svn commit
  • Crea una nueva carpeta llamada myfolder
  • svn agregar myfolder
  • svn commit

Ahora bien, si intento una actualización en co1, aparece un conflicto de árbol:

A + C myfolder > local edit, incoming delete upon update M + myfolder/file.txt

Quiero mantener myfolder y el archivo modificado, por lo que resuelvo el conflicto del árbol:

svn resolve --accept working folder

Ahora si intento comprometerme, obtengo "svn: Directory ''/ myfolder'' está desactualizado". Si trato de resolver esto usando svn up myfolder, aparece un conflicto de árbol de nuevo:

A + C folder > local add, incoming add upon update M + myfolder/file.txt

De acuerdo, intentamos svn resolver --accept working folder again. Pero todavía no podemos comprometernos, obtenemos el mismo mensaje que "svn: Directorio ''/ mi carpeta'' está desactualizado '', si hacemos svn up myfolder, volvemos al último conflicto de árbol.

¿Cuál es el procedimiento correcto para resolver este tipo de conflicto (cuando deseamos mantener myfolder y sus cambios)?

EDITAR: script de línea de Windows cmd para ilustrar:

rmdir /S /Q C:/svntest mkdir C:/svntest cd C:/svntest svnadmin create repo svn co file:///c:/svntest/repo co1 svn co file:///c:/svntest/repo co2 cd co1 mkdir folder echo content > folder/file.txt svn add folder svn commit folder -m "" cd C:/svntest/co2 svn up cd C:/svntest/co1 svn del folder svn commit -m "" mkdir folder svn add folder svn commit -m "" cd C:/svntest/co2 echo changed_content > folder/file.txt svn up svn resolve --accept working folder svn commit -m "" svn up folder svn resolve --accept working folder svn commit -m ""

Y aquí está el resultado de ejecutar ese script (fíjese en los errores de confirmación al final):

C:/>rmdir /S /Q C:/svntest C:/>mkdir C:/svntest C:/>cd C:/svntest C:/svntest>svnadmin create repo C:/svntest>svn co file:///c:/svntest/repo co1 Checked out revision 0. C:/svntest>svn co file:///c:/svntest/repo co2 Checked out revision 0. C:/svntest>cd co1 C:/svntest/co1>mkdir folder C:/svntest/co1>echo content 1>folder/file.txt C:/svntest/co1>svn add folder A folder A folder/file.txt C:/svntest/co1>svn commit folder -m "" Adding folder Adding folder/file.txt Transmitting file data . Committed revision 1. C:/svntest/co1>cd C:/svntest/co2 C:/svntest/co2>svn up A folder A folder/file.txt Updated to revision 1. C:/svntest/co2>cd C:/svntest/co1 C:/svntest/co1>svn del folder D folder/file.txt D folder C:/svntest/co1>svn commit -m "" Deleting folder Committed revision 2. C:/svntest/co1>mkdir folder C:/svntest/co1>svn add folder A folder C:/svntest/co1>svn commit -m "" Adding folder Committed revision 3. C:/svntest/co1>cd C:/svntest/co2 C:/svntest/co2>echo changed_content 1>folder/file.txt C:/svntest/co2>svn up C folder At revision 3. Summary of conflicts: Tree conflicts: 1 C:/svntest/co2>svn resolve --accept working folder Resolved conflicted state of ''folder'' C:/svntest/co2>svn commit -m "" Adding folder svn: Commit failed (details follow): svn: Directory ''/folder'' is out of date C:/svntest/co2>svn up folder C folder At revision 3. Summary of conflicts: Tree conflicts: 1 C:/svntest/co2>svn resolve --accept working folder Resolved conflicted state of ''folder'' C:/svntest/co2>svn commit -m "" Adding folder svn: Commit failed (details follow): svn: Directory ''/folder'' is out of date


Me di cuenta con

svn resolve --accept working PATH_TO_FILE

que debería terminar con:

Se resolvió el estado conflictivo de ''PATH_TO_FILE''


No puedo reproducir lo que has mencionado. Esto es lo que he intentado.

test@test:/tmp$ cd /tmp/ test@test:/tmp$ svn co http://localhost:8080/svn/ so --username=admin A so/trunk A so/branches A so/tags Checked out revision 1. test@test:/tmp$ cd so/trunk/ test@test:/tmp/so/trunk$ mkdir x test@test:/tmp/so/trunk$ ls /tmp > x/test.txt test@test:/tmp/so/trunk$ svn add x/ A x A x/test.txt test@test:/tmp/so/trunk$ svn ci -m "test" Adding trunk/x Adding trunk/x/test.txt Transmitting file data . Committed revision 2. test@test:/tmp/so/trunk$ cd /tmp/ test@test:/tmp$ svn co http://localhost:8080/svn/ so1 --username=admin A so1/trunk A so1/trunk/x A so1/trunk/x/test.txt A so1/branches A so1/tags Checked out revision 2. test@test:/tmp$ cd /tmp/so1/trunk/ test@test:/tmp/so1/trunk$ svn remove x D x/test.txt D x test@test:/tmp/so1/trunk$ svn ci -m "" Deleting trunk/x Committed revision 3. test@test:/tmp/so1/trunk$ mkdir x test@test:/tmp/so1/trunk$ cp ../../so/trunk/x/test.txt x test@test:/tmp/so1/trunk$ ll /tmp > x/test.txt test@test:/tmp/so1/trunk$ svn add x/ A x A x/test.txt test@test:/tmp/so1/trunk$ svn ci -m "" Adding trunk/x Adding trunk/x/test.txt Transmitting file data . Committed revision 4. test@test:/tmp$ cd so/trunk/ test@test:/tmp/so/trunk$ svn up D x A x A x/test.txt Updated to revision 4. test@test:/tmp/so/trunk$

Aparentemente probé el mismo enfoque que tú y no volviste a enfrentar ningún problema. ¿Qué versión de svn estás usando?

export REPOPATH=/tmp/svntest test@test:/tmp/co2/trunk$ rm -rf $REPOPATH test@test:/tmp/co2/trunk$ mkdir $REPOPATH test@test:/tmp/co2/trunk$ svnadmin create $REPOPATH/repo test@test:/tmp/co2/trunk$ svn co file:///$REPOPATH/repo co1 svn: Repository UUID ''2d803eb8-2030-4dd3-bb6f-34ab07c74813'' doesn''t match expected UUID ''82764ae8-6410-4565-933f-9a420cb60013'' test@test:/tmp/co2/trunk$ svn co file:///$REPOPATH/repo co2 svn: Repository UUID ''2d803eb8-2030-4dd3-bb6f-34ab07c74813'' doesn''t match expected UUID ''82764ae8-6410-4565-933f-9a420cb60013'' test@test:/tmp/co2/trunk$ test@test:/tmp/co2/trunk$ cd $REPOPATH/co1 bash: cd: /tmp/svntest/co1: No such file or directory test@test:/tmp/co2/trunk$ mkdir folder mkdir: cannot create directory `folder'': File exists test@test:/tmp/co2/trunk$ echo content > folder/file.txt test@test:/tmp/co2/trunk$ svn add folder svn: warning: ''folder'' is already under version control test@test:/tmp/co2/trunk$ svn commit folder -m "" test@test:/tmp/co2/trunk$ test@test:/tmp/co2/trunk$ cd $REPOPATH/co2 bash: cd: /tmp/svntest/co2: No such file or directory test@test:/tmp/co2/trunk$ svn up At revision 10. test@test:/tmp/co2/trunk$ test@test:/tmp/co2/trunk$ cd $REPOPATH/co1 bash: cd: /tmp/svntest/co1: No such file or directory test@test:/tmp/co2/trunk$ svn del folder svn: Use --force to override this restriction svn: ''folder/file.txt'' is not under version control test@test:/tmp/co2/trunk$ svn commit -m "" test@test:/tmp/co2/trunk$ mkdir folder mkdir: cannot create directory `folder'': File exists test@test:/tmp/co2/trunk$ svn add folder svn: warning: ''folder'' is already under version control test@test:/tmp/co2/trunk$ svn commit -m "" test@test:/tmp/co2/trunk$ test@test:/tmp/co2/trunk$ cd $REPOPATH/co2 bash: cd: /tmp/svntest/co2: No such file or directory test@test:/tmp/co2/trunk$ echo changed_content > folder/file.txt test@test:/tmp/co2/trunk$ svn up At revision 10. test@test:/tmp/co2/trunk$ svn --version svn, version 1.6.6 (r40053) compiled Dec 12 2009, 05:04:54 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository access (RA) modules are available: * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. - handles ''http'' scheme - handles ''https'' scheme * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles ''svn'' scheme * ra_local : Module for accessing a repository on local disk. - handles ''file'' scheme


Tratar

C:/svntest/co2>move folder folder.SAVE C:/svntest/co2>svn revert folder C:/svntest/co2>svn update

Svn debería traer una nueva versión de directorio de folder idéntica a la de co1 . A continuación, puede sobrescribir con el contenido de la folder.SAVE .


Tree Conflicts ofrece una buena visión general de los conflictos de los árboles y su resolución. En algunos casos, svn revert podría ayudar también, al perder todas las modificaciones locales. Como último recurso, una nueva copia de trabajo con cambios fusionados manualmente desde el ''roto'' lo hará volver al camino correcto. Definitivamente el lado oscuro de la subversión.