Apéndice D. Automatizando TortoiseSVN

Tabla de contenidos

Comandos de TortoiseSVN
Tsvncmd URL handler
Comandos de TortoiseIDiff

Dado que todos los comandos de TortoiseSVN se controlan a través de parámetros de línea de comandos, puede automatizarlo con scripts batch o iniciando comandos y diálogos específicos desde otros programas (por ejemplo, desde su editor de textos favorito).

Importante

Recuerde que TortoiseSVN es un cliente GUI, y esta guía de automatización le muestra cómo conseguir que aparezcan los diálogos de TortoiseSVN para recolectar información del usuario. Si desea escribir un script que no requiera entradas del usuario, debería utilizar el cliente de línea de comandos oficial de Subversion.

Comandos de TortoiseSVN

El programa de interfaz gráfico de TortoiseSVN se llama TortoiseProc.exe. Todos los comandos se especifican con el parámetro /command:abcd donde abcd es el nombre obligatorio del comando. La mayoría de estos comando necesitan al menos un argumento de ruta, que se proporciona con /path:"alguna\ruta". En la siguiente tabla el comando se refiere al parámetro /command:abcd y la ruta se refiere al parámetro /path:"alguna\ruta".

Como algunos comandos pueden tomar una lista de rutas de destino (por ejemplo, si se confirman varios ficheros específicos) el parámetro /path puede admitir varias rutas, separadas con un caracter *.

TortoiseSVN utiliza ficheros temporales para pasar múltiples argumentos entre la extensión del shell y el programa principal. Desde TortoiseSVN 1.5.0 en adelante, el parámetro /notempfile es obsoleto y ya no hay necesidad de añadirlo.

You can also specify a file which contains a list of paths, separated by newlines. The file must be in UTF-16 format. If you pass such a file, use /pathfile instead of /path. To have TortoiseProc delete that file after the command is finished, you can pass the parameter /deletepathfile.

El diálogo de progreso que se utiliza para las confirmaciones, actualizaciones y muchos más comandos normalmente se queda abierto después de que el comando termina, hasta que el usuario pulsa el botón Aceptar. Esto puede cambiarse marcando la opción correspondiente en el diálogo de configuración. Pero utilizando esa opción se cerrará el diálogo de progreso, sin importar si se inició el comando desde el fichero batch o desde el menú contextual de TortoiseSVN.

Para especificar una localización diferente del fichero de configuración, utilice el parámetro /configdir:"ruta\al\directorio\de\configuración". Esto tomará preferencia sobre la ruta por defecto, incluyendo cualquier configuración en el registro.

To close the progress dialog at the end of a command automatically without using the permanent setting you can pass the /closeonend parameter.

  • /closeonend:0 no cierra el diálogo automáticamente

  • /closeonend:1 auto cerrar si no hay errores

  • /closeonend:2 cierra automáticamente si no hay errores ni conflictos

  • /closeonend:3 cierra automáticamente si no hay errores, conflictos ni fusiones

To close the progress dialog for local operations if there were no errors or conflicts, pass the /closeforlocal parameter.

La siguiente tabla lista todos los comandos a los que se puede acceder utilizando la línea de comando de TortoiseProc.exe. Como se describe más arriba, se deben utilizar en la forma /command:abcd. En la tabla, el prefijo /command se omite para ahorrar espacio.

Tabla D.1. Lista de comandos y opciones disponibles

ComandoDescripción
:aboutMuestra el diálogo Acerca de. También se muestra si no se pasa ningún comando.
:logOpens the log dialog. The /path specifies the file or folder for which the log should be shown. Six additional options can be set: /startrev:xxx, /endrev:xxx, /strict enables the 'stop-on-copy' checkbox, /findstring:"filterstring" fills in the filter text, /findtext forces the filter to use text, not regex, or /findregex forces the filter to use regex, not simple text search, and /findtype:X with X being a number between 1 and 7. The numbers correspond to:
  • /findtype:1 filter by everything

  • /findtype:2 filter by messages

  • /findtype:3 filter by path

  • /findtype:4 filter by authors

  • /findtype:5 filter by revisions

  • /findtype:7 filter by bug ID

:checkoutAbre el diálogo de obtener. /path especifica el directorio de destino y /url especifica la URL desde la que obtener.
:importAbre el diálogo de importar. /path especifica el directorio con los datos a importar.
:updateUpdates the working copy in /path to HEAD. If the option /rev is given then a dialog is shown to ask the user to which revision the update should go. To avoid the dialog specify a revision number /rev:1234. Other options are /nonrecursive, /ignoreexternals and /includeexternals.
:commitAbre el diálogo de confirmación. /path especifica el directorio de destino o la lista de ficheros a confirmar. También puede especificar la opción /logmsg para pasar un mensaje de registro predefinido al diálogo de confirmación. O, si no desea pasar el mensaje de registro en la línea de comandos, utilice /logmsgfile:ruta, donde ruta apunta a un fichero que contiene el mensaje de registro. Para rellenar la caja de texto del ID del error (en caso de que haya preparado adecuadamente la integración con el sistema de control de errores), puede utilizar /bugid:"el ID del error aquí".
:addAñade los ficheros en /path al control de versiones.
:revertRevierte las modificaciones locales de una copia de trabajo. La /path dice qué items deben revertirse.
:cleanupCleans up interrupted or aborted operations and unlocks the working copy in /path. Use /noui to prevent the result dialog from popping up (either telling about the cleanup being finished or showing an error message).
:resolveMarca un fichero en conflicto especificado en /path como resuelto. Si se especifica /noquestion, la resolución se realiza sin preguntar al usuario primero si realmente debe hacerse.
:repocreateCrea un repositorio en /path
:switchAbre el diálogo cambiar. /path especifica el directorio de destino.
:exportExporta la copia de trabajo en /path a otro directorio. Si /path apunta a un directorio sin versionar, aparecerá un diálogo pidiendo una URL para exportar al directorio en /path.
:mergeAbre el diálogo de fusión. /path especifica el directorio de destino. Para fusionar un rango de revisiones, están disponibles las siguientes opciones: /fromurl:URL, /revrange:cadena. Para fusionar dos árboles de repositorio, están disponibles las siguientes opciones: /fromurl:URL, /tourl:URL, /fromrev:xxx y /torev:xxx. Estas opciones pre-rellenan los campos relevantes en el diálogo de fusión.
:mergeallAbre el diálogo fusionar todo. /path especifica el directorio de destino.
:copyAbre el diálogo de rama / etiqueta. /path especifica la copia de trabajo desde la que crear la rama o etiqueta. Y /url es la URL de destino. También puede especificar la opción /logmsg para pasar un mensaje de registro predefinido al diálogo de rama / etiqueta. O, si no desea pasar el mensaje de registro en la línea de comandos, utilice /logmsgfile:ruta, donde ruta apunta a un fichero que contiene el mensaje de registro.
:settingsAbre el diálogo de configuración.
:removeElimina el/los fichero/s en /path del control de versiones.
:renameRenombra el fichero en /path. El nuevo nombre del fichero se pregunta con un diálogo. Para evitar la pregunta sobre renombrar ficheros similares en un paso, utilice /noquestion.
:diffStarts the external diff program specified in the TortoiseSVN settings. The /path specifies the first file. If the option /path2 is set, then the diff program is started with those two files. If /path2 is omitted, then the diff is done between the file in /path and its BASE. To explicitly set the revision numbers use /startrev:xxx and /endrev:xxx. If /blame is set and /path2 is not set, then the diff is done by first blaming the files with the given revisions. The parameter /line:xxx specifies the line to jump to when the diff is shown.
:showcompare

Dependiendo de las URLs y las revisiones a comparar, esto o bien muestra un diff unificado (si la opción unified está establecida), o un diálogo con una lista de ficheros que han cambiado o, en el caso de que las URLs apunten a ficheros, inicia el visor de diferencias para esos dos ficheros.

Las opciones url1, url2, revision1 y revision2 deben especificarse. Las opciones pegrevision, ignoreancestry, blame y unified son opcionales.

:conflicteditorInicia el editor de conflictos especificado en la configuración de TortoiseSVN con los ficheros correctos para el fichero en conflicto de /path.
:relocateAbre el diálogo relocalizar. /path especifica la ruta de la copia de trabajo a relocalizar.
:helpAbre el fichero de ayuda.
:repostatusOpens the check-for-modifications dialog. The /path specifies the working copy directory. If /remote is specified, the dialog contacts the repository immediately on startup, as if the user clicked on the Check repository button.
:repobrowserInicia el diálogo del navegador de repositorios, apuntando a la URL de la copia de trabajo dada en /path o /path apunta directamente a una URL. Puede utilizarse una opción adicional /rev:xxx para especificar la revisión que el navegador de repositorios debe mostrar. Si se omite /rev:xxx, se supone HEAD. Si /path apunta a una URL, el /projectpropertiespath:ruta/a/copia/trabajo especifica la ruta desde donde hay que leer y utilizar las propiedades del proyecto.
:ignoreAñade todos los objetivos en /path a la lista de ignorados, es decir, añade la propiedad svn:ignore a esos ficheros.
:blame

Abre el diálogo de autoría para el fichero especificado en /path.

Si las opciones /startrev y /endrev se establecen, entonces el diálogo preguntando por el rango de la autoría no se muestra y se utilizan los valores de revisión especificados.

Si la opción /line:nnn se establece, TortoiseBlame se abrirá mostrando el número de línea especificado.

Las opciones /ignoreeol, /ignorespaces y /ignoreallspaces también se soportan.

:catGraba un fichero de una URL o una copia de trabajo dada en /path al lugar dado en /savepath:ruta. La revisión se da en /revision:xxx. Esto puede utilizarse para obtener un fichero cno una revisión concreta.
:createpatchCrea un fichero de parte para la ruta dada en /path.
:revisiongraphMuestra el gráfico de revisiones para la ruta dada en /path.
:lockBloquea un fichero o todos los ficheros en un directorio dado en /path. Se muestra el diálogo Bloquear para que el usuario pueda introducir un comentario para el bloqueo.
:unlockDesbloquea un fichero o todos los ficheros en un directorio dado en /path.
:rebuildiconcacheReconstruye la caché de iconos de Windows. Utilice esto sólo en el caso de que los iconos de Windows se hayan corrompido. Un efecto secundario de esto (y no puede evitarse) es que los iconos del escritorio se recolocan. Para eliminar el mensaje de advertencia, pase /noquestion.
:propertiesMuestra el diálogo de propiedades para la ruta dada en /path.


Ejemplos (que deben introducirse en una única línea):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"mensaje de registro de prueba" /closeonend

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend