Eliminando, moviendo y renombrando

Subversion allows renaming and moving of files and folders. So there are menu entries for delete and rename in the TortoiseSVN submenu.

Figura 4.34. Menú contextual del explorador para archivos versionados

Menú contextual del explorador para archivos versionados


Eliminando archivos y carpetas

Use TortoiseSVNDelete to remove files or folders from Subversion.

When you TortoiseSVNDelete a file or folder, it is removed from your working copy immediately as well as being marked for deletion in the repository on next commit. The item's parent folder shows a modified icon overlay. Up until you commit the change, you can get the file back using TortoiseSVNRevert on the parent folder.

Si desea eliminar un ítem del repositorio, pero mantenerlo localmente como un archivo o carpeta no versionados, utilice Menú contextual extendidoEliminar (mantener local). Debe mantener pulsada la tecla Mayús mientras hace click con el botón derecho sobre el ítem en el panel de lista de exploración (panel derecho) para ver esto en el menú contextual extendido.

If an item is deleted via the explorer instead of using the TortoiseSVN context menu, the commit dialog shows those items as missing and lets you remove them from version control too before the commit. However, if you update your working copy, Subversion will spot the missing item and replace it with the latest version from the repository. If you need to delete a version-controlled file, always use TortoiseSVNDelete so that Subversion doesn't have to guess what you really want to do.

Recuperando un archivo o una carpeta borrados

Si ha borrado un archivo o una carpeta y ya ha confirmado esa operación de borrado en el repositorio, entonces un comando TortoiseSVNRevertir normal no los podrá recuperar. Pero el archivo o la carpeta borrados no están perdidos para nada. Si sabe la revisión en la que se borraron el archivo o la carpeta (si no lo sabe, utilice el diálogo de registro para averiguarlo), abra el navegador de repositorios y cambie a esa revisión. Luego seleccione el archivo o la carpeta que ha borrado, haga click con el botón derecho y seleccione Menú ContextualCopiar a..., y como destino de esa operación de copia seleccione la ruta de su copia de trabajo.

Moviendo archivos y carpetas

Si desea simplemente renombrar en el sitio un archivo o una carpeta, utillice Menú contextualRenombrar... Introduzca el nuevo nombre para el ítem, y ya está.

Si quiere mover archivos dentro de una copia de trabajo, quizás a una subcarpeta distinta, utilice el manejador de arrastrar-y-soltar con el botón derecho del ratón:

  1. seleccione los archivos o directorios que desea mover

  2. arrástrelos con el botón derecho a su nuevo destino dentro de la copia de trabajo

  3. suelte el botón derecho del ratón

  4. en el menú contextual seleccione Menú contextualSVN Mover archivos versionados aquí

Confirmar la carpeta padre

Dado que las operaciones mover y renombrar se realizan como un borrado seguido de un añadir, debe confirmar la carpeta padre de los archivos movidos/renombrados para que se muestre la parte de borrado de la operación en el diálogo de confirmación. Si no confirma la parte eliminada de los archivos movidos/renombrados, se quedarán en el repositorio, y cuando sus compañeros se actualicen no se eliminará el archivo antiguo, es decir, que ellos tendrán ambas copias, la antigua y la nueva.

Usted debe confirmar un cambio de nombre de carpeta antes de cambiar cualquier archivo dentro de la carpeta; si no, su copia de trabajo realmente puede quedar estropeada.

Otra forma de mover o copiar archivos es usar los comandos copiar/cortar de Windows. Seleccione los archivos que quiere copiar, pulse el botón derecho del ratón y elija Menú ContextualCopiar del menú contextual del explorador. Vaya al directorio objetivo, pulse el botón derecho del ratón y elija TortoiseSVNPegar. Para mover archivos, elija Menú ContextualCortar en vez de Menú ContextualCopiar.

También puede utilizar el navegador de repositorios para mover ítems. Lea “El navegador de repositorios” para saber más.

No SVN Mueva externos

NO debería utilizar los comandos TortoiseSVN Mover o Renombrar en una carpeta que ha sido creada utilizando svn:externals. Esta acción puede provocar que el ítem externo se elimine de su repositorio padre, probablemente molestando a muchas otras personas. Si necesita mover una carpeta externa, debería moverla como lo hace con el resto de archivos sin versionar, y luego ajustar las propiedades svn:externals de las carpetas padres origen y destino.

Lidiando con conflictos en las mayúsculas/minúsculas de un nombre de archivo

En el caso que tenga dos archivos en el repositorio con el mismo nombre pero diferenciándose únicamente en las mayúsculas (por ejemplo, TEST.TXT y test.txt), ya no podrá actualizar u obtener el directorio padre en un cliente de Windows. Aunque Subversion soporta los nombres de archivos que se distinguen en las mayúsculas, Windows no.

Esto ocurre a veces cuando dos personas confirman, desde copias de trabajo separadas, archivos tales que tienen el mismo nombre pero con las mayúsculas/minúsculas diferentes. Esto también puede ocurrir cuando se confirman los archivos desde un sistema con un sistema de archivos que distingue mayúsculas/minúsculas, como Linux.

En ese caso, necesita decidir cuál desea mantener y borrar (o renombrar) el otro en el repositorio.

Evitando dos archivos con el mismo nombre

Hay un script de servidor disponible en: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ que impide subidas resultantes en caso de conflicto.

Reparando renombrados de archivos

A veces su amistoso IDE renombrará archivos por usted como parte de un ejercicio de refactorización, y por supuesto no se lo dirá a Subversion. Si intenta confirmar sus cambios, Subversion verá el nombre de archivo antiguo como faltante y el nuevo nombre como archivo no versionado. Podría simplemente confirmar el nuevo nombre de archivo para añadirlo, pero entonces perdería la traza de la historia, ya que Subversion no sabe la relación entre los archivos.

Una forma mejor es notificar a Subversion que el cambio es realmente un renombrado, y puede hacer esto dentro de los diálogos Confirmar y Comprobar modificaciones. Simplemente seleccione tanto el nombre de archivo antiguo (faltante) como el nuevo nombre (no versionado) y utilice Menú contextualReparar movimiento para emparejar los dos archivos como un renombrado.

Eliminando archivos no versionados

Normalmente especifica un la lista de ignorados tal que todos los archivos generados se ignoran en Subversion. Pero ¿y si lo que quiere es limpiar todos esos ítems ignorados para producir una compilación limpia? Normalmente lo haría en su makefile (archivo de instrucciones de compilación), pero si está depurando el makefile, o cambiando el sistema de compilación, es útil tener una forma de barrer la casa.

TortoiseSVN proporciona exactamente esa opción utilizando Menú contextual extendidoEliminar ítems no versionados.... Debe mantener pulsada la tecla Mayús mientras hace click con el botón derecho sobre el ítem en el panel de lista de exploración (panel derecho) para ver esto en el menú contextual extendido. Esto mostrará un diálogo que lista todos los archivos no versionados en cualquier lugar de su copia de trabajo. Ahí podrá seleccionar o deseleccionar ítems para ser eliminados.

Cuando dichos ítems se eliminan, se utiliza la papelera de reciclaje, por lo que si comete un error aquí y borra un archivo que debería haber estado versionado, aún puede recuperarlo.