Apéndice D. Automatizando TortoiseSVN

Tabla de contenidos

Comandos de TortoiseSVN
Manejador de URLs Tsvncmd
Comandos de TortoiseIDiff
TortoiseUDiff Commands

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".

There's a special command that does not require the parameter /command:abcd but, if nothing is specified on the command line, starts the project monitor instead. If /tray is specified, the project monitor starts hidden and only adds its icon to the system tray.

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

You can also specify a file which contains a list of paths, separated by newlines. The file must be in UTF-16 format, without a BOM. 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. If you don't pass /deletepathfile, you have to delete the file yourself or the file gets left behind.

El diálogo de progreso que se utiliza para las confirmaciones, actualizaciones y muchos más comandos normalmente queda abierto después 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 archivo batch o desde el menú contextual de TortoiseSVN.

Para especificar una localización diferente del archivo 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.

Para cerrar el diálogo de progreso al final de un comando automáticamente sin utilizar la configuración permanente, puede pasar el parámetro /closeonend.

  • /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

Para cerrar el diálogo de progreso para operaciones locales si no hubiera errores ni conflictos, pase el parámetro /closeforlocal.

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.
:log

Opens the log dialog. The /path specifies the file or folder for which the log should be shown. Additional options can be set:

  • /startrev:xxx,

  • /endrev:xxx,

  • /strict enables the 'stop-on-copy' checkbox,

  • /merge enables the 'include merged revisions' checkbox,

  • /datemin:"{datestring}" sets the start date of the filter, and

  • /datemax:"{datestring}" sets the end date of the filter. The date format is the same as used for svn date revisions.

  • /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 0 and 511. The numbers are the sum of the following options:

    • /findtype:0 filtrar por todo

    • /findtype:1 filtrar por mensajes

    • /findtype:2 filtrar por ruta

    • /findtype:4 filtrar por autores

    • /findtype:8 filtrar por revisiones

    • /findtype:16 not used

    • /findtype:32 filter by bug ID

    • /findtype:64 not used

    • /findtype:128 filter by date

    • /findtype:256 filter by date range

  • If /outfile:path\to\file is specified, the selected revisions are written to that file when the log dialog is closed. The revisions are written in the same format as is used to specify revisions in the merge dialog.

An svn date revision can be in one of the following formats:

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkoutAbre el diálogo de obtener. El /path especifica el directorio de destino y el /url especifica la URL de la cual se obtiene el proyecto. Si especifica las clave /blockpathadjustments, se bloquean los ajustes del path de obtención automática. El /revision:XXX especifica la revisión que se obtiene.
:importAbre el dialogo de importación. <placeholder-1> especifica el directorio con los datos a importar. Puedes especificar <placeholder-2> switch para pasar un mensaje log predefinido al diálogo de importación. O, si no quiere pasar el mensaje de log de la línea de comandos, usa <placeholder-3>, donde <placeholder-4> apunta a un fichero que contiene el mensaje de log.</placeholder-4></placeholder-3></placeholder-2></placeholder-1>
: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. The /stickydepth indicates that the specified depth should be sticky, creating a sparse checkout. The /skipprechecks can be set to skip all checks that are done before an update. If this is specified, then the Mostrar registro button is disabled, and the context menu to show diffs is also disabled after the update.
:commitAbre el diálogo de confirmación. /path especifica el directorio de destino o la lista de archivos 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 archivo que contiene el mensaje de registro. Para rellenar la caja de texto del ID del error (en caso 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 archivos 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. You also have to pass the /cleanup to actually do the cleanup. Use /noui to prevent the result dialog from popping up (either telling about the cleanup being finished or showing an error message). /noprogressui also disables the progress dialog. /nodlg disables showing the cleanup dialog where the user can choose what exactly should be done in the cleanup. The available actions can be specified with the options /cleanup for status cleanup, /breaklocks to break all locks, /revert to revert uncommitted changes, /delunversioned, /delignored, /refreshshell, /externals, /fixtimestamps and /vacuum.
:resolveMarca un archivo 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
:switchOpens the switch dialog. The /path specifies the target directory and /url the URL to switch to.
:exportExporta la copia de trabajo en /path a otra carpeta. Si /path apunta a una carpeta no versionada, un cuadro de diálogo le preguntará por la URL a exportar a la carpeta /path. Si indica la clave /blockpathadjustments, se bloquearán los ajustes automáticos en la ruta de exportación.
:dropexportExports the working copy in /path to the directory specified in /droptarget. This exporting does not use the export dialog but executes directly. The option /overwrite specifies that existing files are overwritten without user confirmation, and the option /autorename specifies that if files already exist, the exported files get automatically renamed to avoid overwriting them. The option /extended can specify either localchanges to only export files that got changed locally, or unversioned to also export all unversioned items as well.
:dropvendorCopies the folder in /path recursively to the directory specified in /droptarget. New files are added automatically, and missing files get removed in the target working copy, basically ensuring that source and destination are exactly the same. Specify /noui to skip the confirmation dialog, and /noprogressui to also disable showing the progress dialog.
:mergeOpens the merge dialog. The /path specifies the target directory. For merging a revision range, the following options are available: /fromurl:URL, /revrange:cadena. For merging two repository trees, the following options are available: /fromurl:URL, /tourl:URL, /fromrev:xxx and /torev:xxx.
:mergeallAbre el diálogo fusionar todo. /path especifica el directorio de destino.
:copyBrings up the branch/tag dialog. The /path is the working copy to branch/tag from. And the /url is the target URL. If the urls starts with a ^ it is assumed to be relative to the repository root. To already check the option Switch working copy to new branch/tag you can pass the /switchaftercopy switch. To check the option Crear carpetas intermedias. pass the /makeparents switch. You can also specify the /logmsg switch to pass a predefined log message to the branch/tag dialog. Or, if you don't want to pass the log message on the command line, use /logmsgfile:ruta, where ruta points to a file containing the log message.
:settingsAbre el diálogo de configuración.
:removeElimina el/los archivo/s en /path del control de versiones.
:renameRenombra el archivo en /path. El nuevo nombre del archivo se pregunta con un diálogo. Para evitar la pregunta sobre renombrar archivos 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. If the specified file also has property modifications, the external diff tool is also started for each modified property. To prevent that, pass the option /ignoreprops. To explicitly set the revision numbers use /startrev:xxx and /endrev:xxx, and for the optional peg revision use /pegrevision: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.
:shelveShelves the specified paths in a new shelf. The option /shelfname:name specifies the name of the shelf. An optional log message can be specified with /logmsg:message. If option /checkpoint is passed, the modifications of the files are kept.
:unshelveApplies the shelf with the name /shelfname:name to the working copy path. By default the last version of the shelf is applied, but you can specify a version with /version:X.
: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 archivos que han cambiado o, en el caso que las URLs apunten a archivos, inicia el visor de diferencias para esos dos archivos.

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

If the specified url also has property modifications, the external diff tool is also started for each modified property. To prevent that, pass the option /ignoreprops.

If a unified diff is requested, an optional prettyprint option can be specified which will show the merge-info properties in a more user readable format.

:conflicteditorInicia el editor de conflictos especificado en la configuración de TortoiseSVN con los archivos correctos para el archivo en conflicto de /path.
:relocateAbre el diálogo relocalizar. /path especifica la ruta de la copia de trabajo a relocalizar.
:helpAbre el archivo de ayuda.
:repostatusAbre el diálogo comprobar-notificaciones. /path especifica el directorio de trabajo. Si /remote esta especificado, entonces el diálogo contacta al repositrorio inmediatamente al inicio, como si el usuario hubiera pulsado sobre el boton Revisar el repositorio.
:repobrowser

Inicia 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.

Una opción adicional /rev:xxx puede emplearse para especificar la revisión que deberá mostrar el explorador del repositorio. Si se omite la /rev:xxx, por defecto muestra la revisión HEAD.

Si /path apunta a una URL, la /projectpropertiespath:path/to/wc especifica la ruta o path desde el que leer y usar las propiedades del proyecto.

Si /outfile:path\to\file se especifica, la URL y revisión seleccionadas se escriben a dicho fichero cuando el explorador del repositorio se cierra. La primera línea en el fichero de texto contiene la URL, la segunda es la revisión en formato de texto.

:ignoreAñade todos los objetivos en /path a la lista de ignorados, es decir, añade la propiedad svn:ignore a esos archivos.
:blame

Abre el diálogo de autoría para el archivo 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 archivo 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 archivo cno una revisión concreta.
:createpatchCreates a patch file for the path given in /path. To skip the file Save-As dialog you can pass /savepath:ruta to specify the path where to save the patch file to directly. To prevent the unified diff viewer from being started showing the patch file, pass /noview. If a unified diff is requested, an optional prettyprint option can be specified which will show the merge-info properties in a more user readable format.
:revisiongraph

Muestra el gráfico de revisiones para la ruta dada en /path .

To create an image file of the revision graph for a specific path, but without showing the graph window, pass /output:path with the path to the output file. The output file must have an extension that the revision graph can actually export to. These are: .svg, .wmf, .png, .jpg, .bmp and .gif.

Since the revision graph has many options that affect how it is shown, you can also set the options to use when creating the output image file. Pass these options with /options:XXXX, where XXXX is a decimal value. The best way to find the required options is to start the revision graph the usual way, set all user-interface options and close the graph. Then the options you need to pass on the command line can be read from the registry HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockBloquea un archivo o todos los archivos 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 archivo o todos los archivos en un directorio dado en /path.
:rebuildiconcacheReconstruye la caché de íconos de Windows. Utilice esto sólo en el caso que los íconos de Windows se hayan corrompido. Un efecto secundario de esto (y no puede evitarse) es que los íconos del escritorio se recolocan. Para eliminar el mensaje de advertencia, pase /noquestion.
:properties

Shows the properties dialog for the path given in /path.

For dealing with versioned properties this command requires a working copy.

Revision properties can be viewed/changed if /path is an URL and /rev:XXX is specified.

To open the properties dialog directly for a specific property, pass the property name as /property:name.

:sync

Exports/imports settings, either depending on whether the current settings or the exported settings are newer, or as specified.

If a path is passed with /path, then the path is used to store or read the settings from.

The parameter /askforpath will show a file open/save dialog for the user to chose the export/import path.

If neither /load nor /save is specified, then TortoiseSVN determines whether to export or import the settings by looking at which ones are more recent. If the export file is more recent than the current settings, then the settings are loaded from the file. If the current settings are more recent, then the settings are exported to the settings file.

If /load is specified, the settings are imported from the settings file.

If /save is specified, the current settings are exported to the settings file.

The parameter /local forces a settings export to include local settings, i.e. settings that refer to local paths.


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