Что вызывает SVN "Рабочая копия <путь> заблокирована"?

Я написал консольное приложение, которое использует 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.

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

2 ответа

Решение

Нашел ответ на мой вопрос. По сути, 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, чтобы скрипт был полностью автоматизирован. Это означает, что я не могу наблюдать, какие файлы были изменены или добавлены.

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

Другие вопросы по тегам