3

Я написал консольное приложение, которое использует SharpSVN для обновления 3 папок в моем хранилище. Хотел преобразовать это в пакетный скрипт, чтобы убрать зависимость от SharpSVN.

Придумали это:

CD C:\Program Files\TortoiseSVN\bin\
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Core" /closeonend:0
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Modules" /closeonend:0
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\MW" /closeonend:0

Я нашел это как ответ на другой вопрос ТАК. Когда я запускаю его, я получаю 3 всплывающих окна из черепахи.

Один говорит:

Error: Working copy 'C:\AMG\trunk\AMG_AccountManager\AMC' locked.
Error: 'C:\AMG\trunk\AMG_AccountManager\AMC' is already locked.

Второй говорит:

Error: Working copy 'C:\AMG\trunk\AMG_AccountManager' locked.
Error: 'C:\AMG\trunk\AMG_AccountManager\AMC' is already locked.

И третий успешно обновляет папку Модули. Кто-нибудь знает, что вызывает блокировку первых двух?

2 ответа2

3

Нашел ответ на мой вопрос. По сути, Tortoise блокирует папку каждый раз, когда пытается что-то сделать. Мой скрипт только что сразу запустил 3 средства обновления, не дожидаясь завершения предыдущего.

Команда START имеет флаг /wait , ожидающий завершения работы, поэтому я изменил свой скрипт следующим образом:

CD C:\Program Files\TortoiseSVN\bin\
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Core" /closeonend:1
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Modules" /closeonend:1
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\MW" /closeonend:1

К сожалению, я должен закрыть окно обновления, которое открывает Tortoise, чтобы скрипт был полностью автоматизирован. Это означает, что я не могу наблюдать, какие файлы были изменены или добавлены.

1

TortoiseSVN при использовании вручную может обновить несколько каталогов с помощью одной команды, просто выбрав несколько папок перед запуском команды Обновить. svn update командной строки также принимает несколько целей. Итак, я полностью ожидал бы, что командная строка TortoiseSVN также должна принимать несколько путей. http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-automation.html показывает пример фиксации нескольких файлов. Этот синтаксис также работает для обновления? У меня нет TortoiseSVN на компьютере, на котором я сейчас работаю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .