Що спричиняє SVN «Робоча копія <шлях> заблокована»?


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

Я знайшов це як відповідь на інше питання SO . Коли я запускаю його, у мене з’являються 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.

І третій успішно оновлює папку Модулі. Хтось знає, що спричиняє блокування перших двох?


Я бачив, як це відбувається без видимих ​​причин. Я не знаю, що це викликає, але, SVN "чисто" папки зазвичай це виправить.
перехожий

Відповіді:


3

Знайшов відповідь на моє питання. В основному, Черепаха ставить замок у папку кожного разу, коли намагається щось зробити. Мій сценарій відразу запускав 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.