什么原因导致 SVN“工作副本被锁住了”?

什么原因导致 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

我发现这是对另一个问题的回答。当我运行它时,Tortoise 弹出 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 文件夹。有人知道是什么原因导致前两个被锁定吗?

答案1

找到我的问题的答案了。基本上,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 打开的更新窗口。这意味着我无法观察修改或添加了哪些文件。

答案2

TortoiseSVN 在手动使用时,只需在运行更新命令之前选择多个文件夹,即可使用单个命令更新多个目录。命令行svn update还接受多个目标。因此,我完全希望 TortoiseSVN 命令行也接受多个路径。http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-automation.html显示了以下示例承诺多个文件,这个语法也适用于更新吗?我目前使用的电脑上没有 TortoiseSVN。

相关内容