2010-11-03 30 views
5

Cada vez que cambio el nombre de una carpeta usando ToroiseSVN, y luego realizo una confirmación en la carpeta principal, se pone feo. Por lo general, recibo algún extraño conflicto entre los árboles, y errores sobre los archivos SVN .tmp/carpetas que no existen, y otros mensajes oscuros que nunca he visto antes. Es bastante estresante teniendo en cuenta que la carpeta está siendo eliminada y supuestamente recreada, ¿y si simplemente se elimina o se destruye de alguna manera horrible?El cambio de nombre de la carpeta TortoiseSVN invariablemente falla

¿Es mejor hacer el cambio de nombre directamente en el repositorio, en lugar de en la copia de trabajo? ¿Estos problemas son normales?

+1

Acepto completamente. Me he estado tirando de los pelos en los últimos días lidiando con esta tontería. – Jeff

Respuesta

0

Si su repositorio está bien configurado, no debería tener este tipo de problemas. Pero tener muchos archivos y carpetas temporales como dices que puedes causar este tipo de problema.

Renombrar directamente en el repositorio probablemente resuelva la mayoría de sus problemas, pero aún podría causar algunos conflictos de fusión difíciles si sus archivos temporales se han modificado antes de cambiar el nombre.

Si puede, intente colocar los archivos y carpetas temporales en una carpeta principal que puede agregar a svn: ignorar y podrá deshacerse de muchos de estos problemas.

+0

Creo que se trata de los archivos ocultos de SVN, no de mis propios archivos temporales. –

+0

¿Puede publicar los errores que está recibiendo y la estructura de su carpeta? –

+0

Los errores descritos indican corrupción de copia de trabajo en el lado del cliente. Cómo se configura el repositorio es irrelevante. –

2

¿Estos problemas son normales?

No. Mientras que avanza a través del menú TortoiseSVN mover/cambiar el nombre de las cosas, todo debería funcionar bien.

ejemplos de cosas malas que nunca debe hacer:

  • mover/copiar/renombrar/borrar una carpeta versionada en su copia de trabajo con el explorador
  • cambiar el contenido de las carpetas .svn
  • borrado. carpetas svn (utilice la función de exportación en su lugar)

Participé en la formación de los usuarios que migraron de VSS a SVN + TortoiseSVN. La experiencia demuestra que incluso después de años de usar TortoiseSVN, los usuarios seguirán corrompiendo rutinariamente las copias de trabajo haciendo uno de los pasos anteriores. Una vez dañado, por lo general no es posible reparar la copia de trabajo.

Afortunadamente SVN 1.7 (aún no lanzado) eliminará gran parte de esta basura al centralizar los metadatos en una gran carpeta .svn en la raíz de la copia de trabajo, como git y mercurial.

y errores acerca de los archivos de SVN .tmp/carpetas no existentes

Puede que esté utilizando xcopy para manipular las copias de trabajo. Cuando usa xcopy para copiar una carpeta, omite las carpetas vacías (a menos que use el interruptor /E).

Esto hará que las carpetas .svn/tmp en su copia de trabajo se omitan, corrompiendo efectivamente su copia de trabajo.

+0

No, literalmente hago clic con el botón secundario en un subdirectorio y uso la opción "cambiar nombre" de la extensión de shell de TortoiseSVN. Todo funciona, hasta que intento enviar el directorio padre, según las instrucciones de Tortoise –

+0

@John: es posible que su copia de trabajo ya se haya dañado antes de cambiar el nombre. –

+0

¿Cuándo sale _IS_ SVN 1.7? –

1

En general, creo que renombrar no es una buena idea cuando se trabaja con SVN, simplemente porque es muy fácil hacer un lío. Puede ser especialmente desagradable si tiene un grupo de desarrolladores trabajando con la misma base de código y utiliza ramas.

Si no está demasiado preocupado con el historial de cambios, sugiero hacer una copia de la carpeta manualmente (es decir, a través de Explorer no SVN), cambiarle el nombre (otra vez a través de Explorer), eliminar todas las carpetas .svn dentro (para que tener una carpeta limpia no versionada), y luego SVN agregarlo (y los archivos dentro) al repositorio. Entonces solo SVN: elimine la carpeta anterior. Por supuesto, esto no soluciona el problema si alguien más estaba editando los mismos archivos fuente o estaba usando una rama, pero al menos te obliga a pensar sobre las implicaciones de un cambio de nombre.

+1

* Si no está muy preocupado con el historial de cambios * :) – Groo

0

No cambie el nombre de una carpeta/archivo si tiene más de una rama activa. SVN no mantiene los metadatos necesarios para manejarlo, por lo que obtendrá un conflicto de combinación. Tampoco lo hace GIT. Bazaar destaca el cambio de nombre como una de las razones para cambiar a su sistema.

+0

La pregunta es como 7 años. Cambiar el nombre de las carpetas en 2017 funciona principalmente como se esperaba. La única advertencia es la que mencionas (los cambios de portabilidad entre sucursales no reconocen las carpetas renombradas como el mismo objeto) aunque existen soluciones provisionales. Uso particularmente la función "Reparar movimiento" en TortoiseSVN antes de comprometer la fusión donde ocurre el cambio de nombre. –

+0

Estoy usando SVN 1.8.5. El movimiento de reparación aún dará como resultado un conflicto de fusión si hay cambios en los archivos en una rama que han sido renombrados en la otra. Un experimento simple sobre repositorios vírgenes tanto en SVN como en GIT lo mostrará. De nuevo, esto es algo que Bazaar aborda explícitamente. – AbleArcher

Cuestiones relacionadas