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

Содержание

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

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

Важно

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

Команды TortoiseSVN

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

Есть специальная команда, которая не требует параметр /command:abcd но, если в командной строке ничего не задано, то вместо этого запускается монитор проекта. Если задан параметр /tray, то монитор проекта запускается в скрытом режиме и только добавляет свой значок в область на панели задач.

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

Вы также можете указать файл, содержащий список путей, разделенных переносами строк. Файл должен быть в формате UTF-16, без маркера BOM. Если вы передаете такой файл, то используйте /pathfile вместо /path. Чтобы TortoiseProc удалял этот файл после завершения команды, вы можете передать параметр /deletepathfile. Если вы не передаёте параметр /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 включает флажок 'включая слитые ревизии',

  • /datemin:"{datestring}" устанавливает начальную дату фильтра и

  • /datemax:"{datestring}" устанавливает конечную дату фильтра. Формат даты тот же, которые используется в датах ревизий svn.

  • /findstring:"filterstring" заполняет текст фильтра,

  • /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, то выбранные ревизии записываются в этот файл при закрытии диалога журнала. Ревизии записываются в том же формате, который используется при указании ревизии в диалоге слияния.

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Открывает диалог извлечения. /path определяет директорию назначения и /url определяет адрес URL, из которого извлекается. Если вы укажете ключ /blockpathadjustments, путь для автоматического извлечения блокируется. /revision:XXX определяет ревизию для извлечения.
:importОткрывает диалог импорта. /path определяет директорию с данными для импорта. Вы также можете указать переключатель /logmsg для передачи предопределенного сообщения журнала в диалог импорта. Или если вы хотите передать сообщение журнала в командной строке, то используйте /logmsgfile:путь, где путь указывает на файл с сообщением журнала.
:updateОбновляет рабочую копию в /path до ревизии HEAD. Если задан параметр /rev, то показывается диалог, спрашивая у пользователя до какой ревизии обновить. Для отключения диалога укажите номер ревизии /rev:1234. Другие параметры /nonrecursive, /ignoreexternals и /includeexternals. /stickydepth указывает на то, что указанная глубина должна быть постоянной, создавая неполное извлечение. Параметр /skipprechecks может быть установлен для пропуска всех проверок, которые были выполнены перед обновлением. Если это указано, то кнопка Журнал недоступна, и контекстное меню для показа различий также недоступно после обновления.
: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 задает целевую директорию, а /url — адрес URL, на который переключиться.
:exportЭкспортирует рабочую копию /path в другую директорию. Если /path указывает на неверсированную директорию, то диалог запросит адрес URL, который экспортировать в директорию /path. Если вы указываете ключ /blockpathadjustments, то отключается автоматическая настройка пути экспорта.
:dropexportЭкспортирует рабочую копию /path в директорию указанную в /droptarget. Этот экспорт не использует диалог экспорта и выполняется напрямую. Параметр /overwrite указывает, что существующие файлы перезаписываются без подтверждения пользователя, и параметр /autorename указывает, что если файлы уже существуют, то экспортируемые файлы переименовываются автоматически во избежание их перезаписывания. Параметр /extended может определять либо localchanges для экспорта только файлов изменённых локально, либо unversioned для экспорта также всех неверсированных элементов.
:dropvendorКопирует папку в /path рекурсивно в директорию указанную в /droptarget. Новые файлы добавляются автоматически, а отсутствующие файлы удаляются в рабочей копии, по сути обеспечивая чтобы источник и назначение были полностью одинаковыми.
:mergeОткрывает диалог слияния. /path определяет директорию назначения. Для слияния диапазона ревизий доступны следующие параметры: /fromurl:URL, /revrange:строка. Для слияния двух деревьев хранилища доступны следующие параметра: /fromurl:URL, /tourl:URL, /fromrev:xxx и /torev:xxx.
:mergeallОткрывает диалог 'Слить все'. Параметр /path задаёт целевую папку.
:copyОткрывает диалог ответвления/метки. /path это рабочая копия для ответвления/метки. А /url — URL назначения. Если URL начинается с ^, предполагается, что он отностится к корню хранилища. Чтобы сразу отметить опцию Переключить рабочую копию на новую ветку/метку. вы можете передать параметр /switchaftercopy. Чтобы отметить опцию Создавать промежуточные папки передайте параметр /makeparents. Вы можете также указать параметр /logmsg, чтобы передать предопределенное сообщение журнала в диалог ответвления/метки. Или, если вы не хотите передавать сообщение журнала в командной строке используйте /logmsgfile:путь, где путь указывает на файл содержащий сообщение журнала.
:settingsОткрывает диалог настроек.
:removeУбирает файл(-ы) в /path из-под управления версиями.
:renameПереименовывает файл, заданный параметром /path. Новое имя для файла запрашивается при помощи диалога. Для подавления вопроса о переименовании похожих файлов за один приём, укажите /noquestion.
:diffЗапускает внешнюю программу сравнения, указанную в настройках TortoiseSVN. Параметр /path задает первый файл. Если параметр /path2 указан, то программа сравнения запускается с этими двумя файлами. Если не указан параметр /path2, то файл /path сравнивается с его Базовой версией. Если у указанного файла изменились свойства, то внешняя программа сравнения запускается для каждого измененного свойства. Чтобы предотвратить это - укажите параметр /ignoreprops. Чтобы указать номера конкретных ревизий используйте параметр /startrev:xxx и /endrev:xxx, и для указания стержневой (peg) ревизии используйте параметр /pegrevision:xxx. Если параметр /blame указан, а /path2 - нет, тогда сравнение авторства выполнится для указанных ревизий первого файла. Параметр /line:xxx задает строку, на которую будет перемещен курсор в окне с результатами сравнения.
:showcompare

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

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

Если у указанного URL также изменились свойства, то внешнее средство сравнения будет запущено для каждого измененного свойства. Чтобы предотвратить это - укажите параметр /ignoreprops.

: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. Чтобы пропустить диалог "Сохранить Как" вы можете передать /savepath:путь, чтобы явно указать путь сохранения патч-файла. Чтобы избежать запуска программы просмотра объединённых различий патч-файла, передайте /noview.
:revisiongraph

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

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

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

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

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

Для работы с версированными свойствами этой команде нужна рабочая копия.

Свойства ревизии могут быть просмотрены/изменены если /path является адресом URL и указано /rev:XXX.

Чтобы непосредственно открыть диалог для определённого свойства, передайте имя свойства в параметре /property:name.

:sync

Экспортирует/импортирует настройки, либо в зависимости от текущих настроек или если экспортированные настройки новее, или как указано.

Если передан путь как /path, путь используется для сохранения или чтения настроек.

Параметр /askforpath покажет пользователю диалог открытия/сохранения, чтобы выбрать путь экспорта/импорта.

Если ни параметр /load, ни параметр /save не заданы, то TortoiseSVN определяет экспортировать или импортировать настройки по тому какие из них более поздние. Если файл экспорта более поздний, чем текущие настройки, то настройки загружаются из файла. Если текущие настройки более поздние, то настройки экспортируются в файл настроек.

Если задан параметр /load, то настройки импортируются из файла настроек.

Если задан параметр /save, то текущие настройки экспортируются в файл настроек.

Параметр /local включает локальные настройки в экспорт, т.е. настройки, которые ссылаются на локальные пути.


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

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