Приложение D. Автоматизация TortoiseSVN

Содержание

Команды TortoiseSVN
Обработчик Tsvncmd для URL
Команды TortoiseIDiff

Поскольку всеми командами TortoiseSVN можно управлять при помощи параметров командной строки, вы можете использовать их для автоматизации в пакетных скриптах или же запустить конкретную команду и диалог из других программ (например, из вашего любимого текстового редактора).

Важно

Помните, что TortoiseSVN является клиентом с графическим интерфейсом пользователя, и это руководство по автоматизации показывает, как показывать диалоги TortoiseSVN для получения пользовательского ввода. Если вы хотите написать скрипт, который не требует ввода, вы должны использовать официальный клиент Subversion для командной строки.

Команды TortoiseSVN

Программа, отображающая интерфейс пользователя TortoiseSVN, называется TortoiseProc.exe. Все команды указываются с параметрами /command:abcd, где abcd - это обязательное имя команды. Большинству из этих команд необходим как минимум один параметр с именем пути, задаваемый при помощи /path:"некоторый\путь". В следующей таблице 'команда' обозначает параметр /command:abcd и 'путь' обозначает параметр /path:"некоторый\путь".

Так как некоторые команды могут принимать список целевых путей (например, фиксация нескольких конкретных файлов) в параметре /path можно задать несколько путей, разделённых символом *.

Вы также можете указать файл, содержащий список путей, разделенных переносами строк. Файл должен быть в формате UTF-16, без маркера BOM. Если вы передаете такой файл, то используйте /pathfile вместо /path. Чтобы TortoiseProc удалял этот файл после завершения команды, вы можете передать параметр /deletepathfile.

Окно выполнения, используемое при фиксации, обновлении и множестве других команд, обычно остаётся открытым после завершения команды до тех пор, пока пользователь не нажмёт кнопку ОК. Это может быть изменено установкой соответствующего параметра в диалоге настроек. Но использование этой настройки будет закрывать окно выполнения независимо от того, запущена ли команда из вашего пакетного командного файла или из контекстного меню TortoiseSVN.

Для указания другого местоположения конфигурационного файла, используйте параметр /configdir:"путь\до\конигурационной\папки". Это переопределит путь по умолчанию, в том числе и установку из реестра.

Для автоматического закрытия окна выполнения по окончанию команды без предварительного постоянного изменения настройки вы можете указать параметр /closeonend.

  • /closeonend:0 не закрывать диалог автоматически

  • /closeonend:1 закрывать автоматически, если нет ошибок

  • /closeonend:2 закрывать автоматически, если нет ошибок и конфликтов

  • /closeonend:3 закрывать автоматически, если нет ошибок, конфликтов и слияний

Для закрытия окна выполнения для локальных операций при отсутствии ошибок и конфликтов, укажите параметр /closeforlocal.

В нижеприведённой таблице содержатся все команды, доступные при использовании командной строки TortoiseProc.exe. Как описано выше, они должны использоваться в виде /command:abcd. В таблице префикс /command опущен для экономии места.

Таблица D.1. Список доступных команд и параметров

КомандаОписание
:aboutПоказывает диалог 'О программе'. Он же отображается, если команда не указана.
:logОткрывает диалог журнала. /path указывает файл или папку, для которой должен быть показан журнал. Могут быть указаны дополнительные параметры: /startrev:xxx, /endrev:xxx, /strict включает флажок 'остановиться на копировании', /merge включает флажок 'включая слитые ревизии', /findstring:"строка_фильтра" заполняет текст фильтра, /findtext заставляет фильтр использовать текст, а не регулярное выражение, или /findregex заставляет фильтр использовать регулярное выражение, а не простой текстовый поиск, и /findtype:X с X числом между 0 и 511. Числа равны сумме следующих параметров:
  • /findtype:0 фильтр по всему

  • /findtype:1 фильтр по сообщениям

  • /findtype:2 фильтр по пути

  • /findtype:4 фильтровать по авторам

  • /findtype:8 фильтр по ревизиям

  • /findtype:16 не используется

  • /findtype:32 фильтр по ID ошибки

  • /findtype:64 не используется

  • /findtype:128 фильтр по дате

  • /findtype:256 фильтр по диапазону дат

Если /outfile:path\to\file указан, то выбранные ревизии сохраняются в этот файл при закрытии диалога. Ревизии записываются в том же формате, который используется в диалоге слияния для указания ревизий."
:checkoutОткрывает диалог извлечения. /path определяет директорию назначения и /url определяет адрес URL, из которого извлекается. Если вы укажете ключ /blockpathadjustments, путь для автоматического извлечения блокируется. /revision:XXX определяет ревизию для извлечения.
:importОткрывает диалог импорта. /path определяет директорию с данными для импорта. Вы также можете указать переключатель /logmsg для передачи предопределенного сообщения журнала в диалог импорта. Или если вы хотите передать сообщение журнала в командной строке, то используйте /logmsgfile:путь, где путь указывает на файл с сообщением журнала.
:updateОбновляет рабочую копию в /path до ревизии HEAD. Если задан параметр /rev, то показывается диалог, спрашивая у пользователя до какой ревизии обновить. Для отключения диалога укажите номер ревизии /rev:1234. Другие параметры /nonrecursive, /ignoreexternals и /includeexternals. /stickydepth указывает на то, что указанная глубина должна быть постоянной, создавая неполное извлечение.
:commitОткрывает диалог фиксации. Параметр /path задаёт целевую папку или список файлов для фиксации. Вы можете также задать параметр /logmsg для указания предопределённого сообщения журнала, которое будет передано в диалог фиксации. Или, если вы не желаете передавать сообщение журнала в командной строке, воспользуйтесь /logmsgfile:путь, где путь задаёт файл, содержащий сообщение журнала. Для предварительного заполнения поля 'ID ошибки' (в случае, если у вас настроена интеграция с системой отслеживания ошибок) вы можете применить параметр /bugid:"здесь id ошибки".
:addДобавляет файлы в /path под управление версиями.
:revertОтменяет локальные изменения в рабочей копии. Параметр /path указывает, какие элементы должны быть возвращены в прежнее состояние.
:cleanupОчищает прерванные или незавершенные операции и разблокирует рабочую копию в /path. Используйте /noui для предотвращения появления диалога результата (либо очистка завершается, либо показывается сообщение об ошибке). /noprogressui также отключает диалог процесса выполнения. /nodlg отключает показ диалога, в котором пользователь может выбрать, что именно должно быть выполнено при очистке. Доступные действия могут быть указаны параметрами /cleanup для очистки статуса, /revert, /delunversioned, /delignored, /refreshshell и /externals.
:resolveПомечает конфликтные файлы, указанные в /path, как улаженные. Если задан параметр /noquestion, то улаживание производится, не спрашивая предварительно разрешения на выполнение у пользователя.
:repocreateСоздаёт хранилище в папке, указанной параметром /path
:switchОткрывает диалог переключения. Параметр /path задаёт целевую папку.
:exportЭкспортирует рабочую копию /path в другую директорию. Если /path указывает на неверсированную директорию, то диалог запросит адрес URL, который экспортировать в директорию /path. Если вы указываете ключ /blockpathadjustments, то отключается автоматическая настройка пути экспорта.
:dropexportЭкспортирует рабочую копию /path в директорию указанную в /droptarget. Этот экспорт не использует диалог экспорта и выполняется напрямую. Параметр /overwrite указывает, что существующие файлы перезаписываются без подтверждения пользователя, и параметр /autorename указывает, что если файлы уже существуют, то экспортируемые файлы переименовываются автоматически во избежание их перезаписывания.
:mergeОткрывает диалог слияния. /path определяет директорию назначения. Для слияния диапазона ревизий доступны следующие параметры: /fromurl:URL, /revrange:строка. Для слияния двух деревьев хранилища доступны следующие параметра: /fromurl:URL, /tourl:URL, /fromrev:xxx и /torev:xxx. Для выполнения реинтеграционного слияния используйте следующие опции: /fromurl:URL и /reintegrate. Эти параметры заполняют соответствующие поля в диалоге слияния.
:mergeallОткрывает диалог 'Слить все'. Параметр /path задаёт целевую папку.
:copyОткрывает диалог ответвления/метки. Параметр /path задаёт рабочую копию, из которой будет выполнятся создаваться ответвление/метка. Параметр /url задаёт целевой URL. Вы можете также задать параметр /logmsg для указания предопределённого сообщения журнала, которое будет передано в диалог ответвления/метки. Или, если вы не желаете передавать сообщение журнала в командной строке, воспользуйтесь /logmsgfile:путь, где путь задаёт файл, содержащий сообщение журнала.
:settingsОткрывает диалог настроек.
:removeУбирает файл(-ы) в /path из-под управления версиями.
:renameПереименовывает файл, заданный параметром /path. Новое имя для файла запрашивается при помощи диалога. Для подавления вопроса о переименовании похожих файлов за один приём, укажите /noquestion.
:diffЗапускает указанную в настройках TortoiseSVN внешнюю программу сравнения. Параметр /path задаёт первый файл. Если указан параметр /path2, то программа сравнения запускается с этими двумя файлами. Если параметр /path2 опущен, то сравнение делается между файлом, задаваемым /path и его базовой ревизией (BASE). Для явного задания номеров ревизий используйте параметры /startrev:xxx и /endrev:xxx, и дополнительно для опорной (peg) ревизии — /pegrevision:xxx. Если параметр /blame задан, а /path2 — нет, то сначала производится получение авторства для файлов в заданных ревизиях, после чего выполняется сравнение. Параметр /line:xxx указывает строку, к которой необходимо перейти при показе различий.
:showcompare

В зависимости от указанных URL и ревизий для сравнения, будет показаны либо объединённые различия (если указан параметр unified), диалог со списком изменённых файлов, либо, если адреса URL указывают на файлы, запускает программу просмотра различий для этих двух файлов.

Параметры url1, url2, revision1 и revision2 должны быть указаны. Параметры pegrevision, ignoreancestry, blame и unified являются необязательными.

:conflicteditorЗапускает указанный в настройках TortoiseSVN редактор конфликтов для файлов, соответствующих конфликтующему файлу, задаваемому параметром /path.
:relocateОткрывает диалог перебазирования. Параметр /path указывает путь рабочей копии, который будет перебазирован.
:helpОткрывает файл справки.
:repostatusОткрывает диалог проверки наличия изменений. Параметр /path задаёт папку рабочей копии. Если указан параметр /remote, то диалог связывается с хранилищем при начале работы, как если бы пользователь нажал кнопку Проверить хранилище.
:repobrowser

Запускает диалог браузера хранилища указывающего на адрес URL рабочей копии, заданной в /path или /path напрямую указывает адрес URL.

Дополнительный параметр /rev:xxx может использоваться для определения ревизии, которая должна быть показана в браузере хранилища. Если параметр /rev:xxx пропущен, то по умолчанию будет HEAD ревизия.

Если /path указывает на адрес URL, параметр /projectpropertiespath:path/to/wc определяет путь, из которого читать и использовать свойства проекта.

Если задан /outfile:path\to\file, то выбранный адрес URL и ревизия записывается в этот файл при закрытии обозревателя хранилища. Первая строка в этом файле содержит адрес URL, вторая строка — ревизию в текстовом формате.

:ignoreДобавляет все целевые файлы из /path в список игнорирования, т.е. добавляет к этим файлам свойство svn:ignore.
:blame

Открывает диалог авторства для файла, указанного в /path.

Если заданы параметры /startrev и /endrev, то диалог запроса диапазона ревизий для получения информации об авторстве не отображается, вместо этого используются значения этих параметров.

Если задан параметр /line:nnn, TortoiseBlame откроется, отображая строку с указанным номером.

Также поддерживаются параметры /ignoreeol (игнорировать окончания строк), /ignorespaces (игнорировать непечатаемые знаки) и /ignoreallspaces (игнорировать все непечатаемые знаки).

:catСохраняет файл из URL или пути в рабочей копии, заданному в /path, в место, указанное в /savepath:путь. Ревизия передается при помощи /revision:xxx. Может быть использовано для получения файла нужной ревизии.
:createpatchСоздаёт файл заплатки для пути, указанному в /path
:revisiongraph

Показывает граф ревизий для пути заданного в /path.

Для создания файла с изображением графа ревизии для опеределенного пути, но без показа окна графа, передайте /output:path с путем к выходному файлу. Выходной файл должен иметь расширение, чтобы граф ревизий действительно экспортировался. Вот эти расширения: literal>.svg

С тех пор как граф ревизий имеет много параметров, которые влияют на отображение, вы также можете установить параметры при создании выходного файла изображения. Передавайте эти параметры в /options:XXXX, где XXXX — десятичное значение. Лучший способ найти требуемые параметры — запустить граф ревизий обычным способом, установить все параметры пользовательского интерфейса и закрыть граф. Затем параметры, которые вам необходимо передать в командной строке могут быть прочитаны из реестра HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockБлокирует файл или все файлы в папке, указанной в /path. Отображается диалог блокирования, чтобы пользователь мог ввести комментарий для блокировки.
:unlockРазблокирует файл или все файлы в папке, указанной в /path.
:rebuildiconcacheВосстанавливает кэш значков Windows. Используйте только в случае, если значки Windows испорчены. Побочный эффект этой команды (которого нельзя избежать) состоит в переупорядочивании значков на рабочем столе. Чтобы не появлялось окно сообщения, укажите /noquestion.
:propertiesПоказывает диалог работы со свойствами для пути, указанному в /path.


Примеры (должны быть введены в одной строке):

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

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