web-dev-qa-db-ja.com

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

これは別のSO質問 への回答です。実行すると、Tortoiseから3つのウィンドウがポップアップ表示されます。

ある人は言う:

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

2番目のものは言う:

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

そして3つ目はModulesフォルダーを正常に更新します。最初の2つがロックされる原因を知っている人はいますか?

3
sab669

私の問題に対する答えを見つけました。基本的に、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が開く更新ウィンドウを閉じる必要があります。これは、どのファイルが変更または追加されたかを確認できないことを意味します。

3
sab669

TortoiseSVNを手動で使用すると、Updateコマンドを実行する前に複数のフォルダーを選択するだけで、1つのコマンドで複数のディレクトリを更新できます。コマンドラインsvn update複数のターゲットも受け入れます。したがって、TortoiseSVNコマンドラインも複数のパスを受け入れる必要があることを完全に期待しています。 http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-automation.htmlcommiting複数の例を示していますファイル、その構文は更新にも機能しますか?現在使用しているコンピューターにTortoiseSVNがありません。

1
Ben