Manuals

Apêndice D. Automatizar o TortoiseSVN

Índice

Comandos TortoiseSVN
manípulo URL do Tsvncmd
Comandos TortoiseIDiff
Comandos TortoiseUDiff

Visto que todos os comandos do TortoiseSVN são controlados através de parâmetros de linha de comandos, tu podes automatizá-los com scripts de batch ou arrancar comandos específicos e caixas de diálogo a partir de outros comandos (e.g. o teu editor de texto preferido).

Importante

Lembra-te que o TortoiseSVN é um cliente de GUI e este guia de automação mostra-te como fazer as caixas de diálogo do TortoiseSVN aparecer, para colectar a entrada do utilizador. Se tu queres escrever um script que não requer entrada de dados, deverás usar em alternativa, o cliente de linha de comandos oficial do Subversion.

Comandos TortoiseSVN

O programa de GUI do TortoiseSVN chama-se TortoiseProc.exe. Todos os comandos são especificados com o parâmetro /command:abcd onde abcd é o nome do comando requerido. A maioria desses comandos necessitam pelo menos de um argumento de caminho, que é dado com /path:"some\path". Na tabela seguinte o comando refere-se ao parâmetro /command:abcd e o caminho refere-se ao parâmetro /path:"some\path".

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.

Visto que alguns dos comandos podem necessitar de uma lista de caminhos de destinos (e.g. submeter vários ficheiros específicos), o parâmetro /path pode requerer vários caminhos, separados pelo 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.

A caixa de diálogo que é usada para submissões, actualizações e muitos mais comandos fica usualmente aberta depois do comando ter acabado até o utilizador premir o botão OK. Isto pode ser alterado ao verificar a opção correspondente na caixa de diálogo preferências. Mas ao usar essa preferência, ir-se-á fechar a caixa de diálogo de progresso independentemente de iniciares o comando a partir de um ficheiro de batch ou a partir do menu de contexto do TortoiseSVN.

Para especificar uma localização diferente para o ficheiro de configuração, usa o parâmetro /configdir:"path\to\config\directory". Isto irá substituir o caminho por defeito, incluindo qualquer configuração do registo.

Para fechar a caixa de diálogo de progresso automaticamente no fim de um comando, sem usar a preferência permanente, tu podes passar o parâmetro /closeonend.

  • /closeonend:0 não fechar automaticamente a caixa de diálogo

  • /closeonend:1 fechar automaticamente se não existem erros

  • /closeonend:2 fechar automaticamente se não existem erros e conflitos

  • /closeonend:3 fechar automaticamente se não existem erros, conflitos e integrações

Para fechar a caixa de diálogo de progresso para operações locais, se não existem erros ou conflitos, passa o parâmetro /closeforlocal.

A tabela abaixo lista todos os comandos que podem ser acedidos usando a linha de comandos TortoiseProc.exe. Como descrito acima, esses deverão ser usados na forma /command:abcd. Na tabela é omitido o prefixo /command por questões de espaço.

Tabela D.1. Lista de comandos e opções disponíveis

ComandoDescrição
:aboutMosta a caixa de diálogo Sobre. Esta é também mostrada se não é dado nenhum 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,

  • /limit:xxx limits the amount of fetched messages

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

    • /findtype:1 filtrar por mensagens

    • /findtype:2 filtrar por caminho

    • /findtype:4 filtrar por autores

    • /findtype:8 filtrar por revisões

    • / Findtype: 16 não utilizado

    • /findtype:32 filtrar por ID de bug

    • / Findtype: 64 não usado

    • / Findtype: 128 filtrar por data

    • / Findtype: 256 filtrar por intervalo de datas

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

:checkout

Opens the checkout dialog. The /path specifies the target directory and the /url specifies the URL to checkout from. If you specify the key /blockpathadjustments, the automatic checkout path adjustments are blocked. The /revision:XXX specifies the revision to check out.

If you specify /outfile:"path/to/file" the specified file will contain three lines after a checkout. The first line is the checkout path, the second line the url and the third the revision.

:importAbre a caixa de diálogo importar. O /path específica a pasta com os dados a importar. Podes também especificar a opção /logmsg para passar uma mensagem de registo pré-definida para a caixa de diálogo importar. Ou, senão desejas passar a mensagem de registopela linha de comandos, usa /logmsgfile:path , onde caminho aponta para um ficheiro que contém a mensagem de registo.
: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 registo button is disabled, and the context menu to show diffs is also disabled after the update.
:commitAbre a caixa de diálogo submeter. O /path específica a pasta de destino ou a lista de ficheiros a submeter. Tu podes também especificar a opção /logmsg para passar uma mensagem de registo pré-definida para a caixa de diálogo submeter. Ou se não queres passar a mensagem de registo na linha de comandos, usa /logmsgfile:path, onde o caminho aponta para um ficheiro que contém a mensagem de registo. Para pré-preencher a caixa do ID-Problema ( no caso de teres configurado correctamente a integração com os seguidores de bugs), podes usar para isso o /bugid:"o id do bug aqui".
:addAdiciona ao controlo de versões os ficheiros em /path
:revertReverte as modificações locais de uma cópia de trabalho. O /path diz quais os itens a reverter.
: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 um ficheiro em conflito em /path como resolvido. Se for dado o /noquestion então a resolução é feita sem perguntar primeiro ao utilizador se ela deverá ser mesmo feita.
:repocreateCria um repositório em /path
:switchAbre a caixa de diálogo trocar. O /path especifica a pasta de destino e o /url o URL de destino da troca.
:exportExporta a cópia de trabalho em /path para outra pasta. Se o /path apontar para uma pasta não versionada, a caixa de diálogo perguntará por um URL para exportar para a pasta em /path. Se especificares a chave /blockpathadjustments, são bloqueados os ajustamentos automáticos de caminhos de exportação.
:dropexportExporta a cópia de trabalho em /path para a pasta especificada em /droptarget. Esta exportação não usa a caixa de diálogo exportar, mas executa-a directamente. A opção /overwrite indica que os ficheiros existentes são sobrepostos sem informação ao utilizador, e a opção /autorename indica que se os ficheiros já existirem, os ficheiros exportados serão automaticamente renomeados para evitar sobreposições. A opção /extended pode indicar localchanges para só exportar ficheiros que foram alterados localmente, ou não-versionado exportar também todos os itens não versionados.
: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:string. For merging two repository trees, the following options are available: /fromurl:URL, /tourl:URL, /fromrev:xxx and /torev:xxx.
:mergeallAbre a caixa de diálogo integrar todos. O /path específica a pasta 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 Troca a cópia de trabalho para o novo ramo/etiqueta you can pass the /switchaftercopy switch. To check the option Criar pastas intermédias 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:path, where caminho points to a file containing the log message.
:settingsAbre a caixa de diálogo preferências.
:removeRemove do controlo de versões o(s) ficheiro(s) em /path.
:renameAltera o nome do ficheiro em /path. O novo nome do ficheiro será pedido numa caixa de diálogo. Para evitar a pergunta sobre alterar o nome a ficheiros similares num só passo, passa /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

Dependendo dos URLs e revisões a comparar, isto ou mostra uma comparação unificada (se a opção unified for usada), uma caixa de diálogo com a lista de ficheiros que foram alterados, ou se os URLs apontam para ficheiros arranca o visualizador de comparação para esses dois ficheiros.

As opções url1, url2, revision1 e revision2 devem ser especificadas. As opções pegrevision, ignoreancestry, blame and unified são opcionais.

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.

:conflicteditorArranca o editor de conflitos especificado nas preferências do TortoiseSVN com os ficheiros correctos para o ficheiro em conflito no /path.
:relocateAbre a caixa de diálogo reposicionar. O /path especifica o caminho da cópia de trabalho a reposicionar.
:helpAbre o ficheiro de ajuda.
:repostatusAbre a caixa de diálogo verificar-alterações. O /path especifica a pasta da cópia de trabalho. Se for especificada a /remote, a caixa de diálogo contacta imediatamente o repositório no arranque, como se o utilizador clicasse no botão Verificaro repositório.
:repobrowser

Arranca a caixa de diálogo do navegador de repositório, apontando para o URL da cópia de trabalho dada pelo /path ou o /path aponta directamente para um URL.

Uma opção adicional /rev:xxx pode ser usada para especificar a revisão que será mostrada no navegador de repositório. Se a opção /rev:xxx for omitida, será usada a HEAD por defeito.

Se /path apontar para um URL, a /projectpropertiespath:path/to/wc especifica o caminho de onde ler e usar as propriedades de projecto.

Se for especificada a /outfile:path o\file, o URL seleccionado e o número de revisão são escritos para esse ficheiro, quando o navegador de repositório for fechado. A primeira linha nesse ficheiro de texto contém o URL, a segunda linha a revisão no formato de texto.

:ignoreAdiciona todos os objectos em /path à lista de ignorados, i.e. adiciona a propriedade svn:ignore a esses ficheiros.
:blame

Abre a caixa de diálogo responsabilizar paa o ficheiro especificado em /path.

Se as opções /startrev e /endrev são usadas, então a caixa de diálogo que pergunta pelo intervalo de responsabilidade não será mostrada, e em alternativa será usado os valores dessas opções.

Se a opção /line:nnn for usada, o TortoiseBlame irá abrir mostrando a linha cujo número foi especificado.

As opções /ignoreeol, /ignorespaces e /ignoreallspaces são também suportadas.

:catGuarda um ficheiro de um URL ou cópia de trabalho dada em /path para a localização especificada em /savepath:path. A revisão é dada em /revision:xxx. Isto pode ser usado para obter um ficheiro com uma revisão específica.
:createpatchCreates a patch file for the path given in /path. To skip the file Save-As dialog you can pass /savepath:path 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

Mostra o gráfico de revisões para o caminho dado em /path.

Para criar um ficheiro de imagem do gráfico de revisão para um caminho específico, mas sem mostrar a janela do gráfico, /output:path com o caminho para o ficheiro de saída. O ficheiro de saída deve ter uma extensão que o gráfico de revisão possa exportar. São suportados os formatos: .svg, .wmf, .png, .jpg, .bmp and .gif.

Visto o gráfico de revisões ter muitas opções que afectam o modo como é visualizado, podes também activar opções para usares ao criar o ficheiro de imagem de saída. Passa essas opções com /options:XXXX, onde XXXX é um valor decimal. A melhor forma para encontrares as opções requeridas é arrancar o gráfico de revisões do modo usual, colocar todas as opções do interface gráfico e fechar o gráfico. Agora as opções que necessitas de passar na linha de comandos podem ser lidas a partir do registo HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockBloqueia um ficheiro ou todos os ficheiros numa pasta dada por /path. É mostrada a caixa de diálogo 'Bloquear' para que o utilizador possa introduzir um comentário para o bloqueio.
:unlockDesbloqueia um ficheiro ou todos os ficheiros numa pasta dada por /path.
:rebuildiconcacheReconstrói a cache de ícones do windows. Usa só isto no caso de os ícones do Windows ficarem corrompidos. Um efeito secundário disto (que não pode ser evitado) é que os ícones no ambiente de trabalho são reordenados. Para suprimir a caixa de mensagem, passa o /noquestion.
:properties

Mosta a caixa de diálogo propriedades para o caminho especificado por /path.

Para este comando lidar com propreidades versionadas é necessário uma cópia de trabalho.

As propriedades da revisão podem ser vistas/alteradas se /path for um URL e for especificado /rev:XXX .

Para abrir directamente a caixa de diálogo de propriedades para uma propriedade específica, passa o seu nome como /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.


Exemplos (que deveram ser introduzidos numa só linha):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

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

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

TortoiseSVN homepage