SVN: 仓库被锁定且执行svn cleanup命令失败

4
我使用putty连接我的Linux服务器,从SVN服务器检出数据,并将检出过程设置为后台运行。当我退出putty shell时,检出仍在运行。
下次登录并继续在同一目录中检出时,会显示以下消息:
svn: Working copy 'scon_project' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

但是当我运行svn cleanup时,仍然会遇到这样的问题:
svn: In directory 'var/data'
svn: Error processing command 'modify-wcprop' in 'var/data'
svn: 'var/data/logo.jpg' is not under version

但是 var/data/logo.jpg 实际上存在于代码库中。

问题出在哪里,我该如何解决?谢谢!

2个回答

2
如果您仅退出Putty,您的结帐将不会在后台继续进行;它很可能会停在任何文件正在被锁定的地方。这可能会导致您在“clean”上看到的不可预测的行为。
您可以通过使用GNU Screen实用程序来解决此问题,该实用程序允许您在关闭Putty时保持会话活动,并且通常包含在大多数Linux发行版的软件包管理器中。
您可以使用Screen做很多事情,手册非常广泛,但是为了此目的,您只需要执行以下操作:
screen

您现在位于新的终端中,可以进行所需操作,如果愿意可以关闭Putty;您的程序将继续运行。
重新登录后,请执行以下操作:
screen -x

“你将会重新连接到你之前的会话。”
“要终止一个会话,请按下 ctrl+d,就像结束任何一个终端会话一样。”

据我所知:SVN 存储库有时被锁定的问题是永久性的。也就是说,杀掉可能持有未完成检出的会话将不会解除由于错误而锁定的存储库。请参见下面的我的回答。 - trejder

0
你为什么要通过远程连接(例如使用Putty)到你的服务器,然后在那里保留你的代码库和检出呢?难道你不能在本地电脑上使用任何SVN客户端(比如Windows下的TortoiseSVN),并在这里执行所有的操作吗?这样做会更容易解决一些常见的问题。
在某些情况下,SVN锁定某个存储库(或本地工作副本)是一个常见问题,并且大多数时候是由于某些错误导致的。有许多方法可以解除锁定的存储库。尝试通过Google查找它们。
根据存储库被锁定的深度,大多数方法可能都会失败。在这种情况下,我总是使用所谓的“暴力”模式。即:
1. 将存储库的当前版本检出到某个新文件夹。 2. 导出此文件夹的内容到另一个文件夹中(获取所有文件但不包括SVN元数据)。 3. 删除第一个文件夹中的所有文件(即你检出存储库的文件夹)。 4. 复制(或移动)第二个文件夹中的所有文件到第一个文件夹中。 5. 提交更改。
这是许多存储库问题的常见解决方案,包括锁定存储库的问题。

我强烈建议您在本地计算机上使用本地SVN客户端。除非您确实必须这样做并且确信没有其他方法,否则不要在服务器上远程执行任何操作,因为您实际上持有SVN存储库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接