2011-05-20 79 views
4

我使用putty连接到我的Linux服务器,并从SVN服务器中检出数据,我将检查过程设置为在后台运行。当我退出腻子外壳时,结帐仍在运行。SVN:存储库已锁定,svn清理命令失败

下一次我登录,并在同一目录下继续结账用,下面的消息显示:

svn: Working copy 'scon_project' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 

但是当我运行清理命令,仍然遇到的问题是这样的:

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

如果您刚退出Putty,您的结账将不会在后台继续;它最有可能挂在当时的任何地方,任何正在工作的文件都保持锁定状态。这可能会导致您在'干净'中看到的不可预知的行为。

你可以通过使用GNU Screen实用程序来解决这个问题,它可以让你的会话在关闭Putty时保持活跃状态​​,并且倾​​向于包含在大多数Linux发行版的包管理器中。

你可以做很多事情的屏幕,而该男子的网页是巨大的,但对于这个目的,你应该只需要做到以下几点:

screen 

您现在在一个新的终端是和能做你需要做的事情,如果你喜欢的话,关闭腻子;你的程序将继续运行。

再次登录后做:

screen -x 

你会被重新连接到旧的会话。

要终止任何会话,请按ctrl + d,就像您要结束任何终端会话一样。

+0

AFAIK:SVN存储库有时被锁定的问题是永久性的。即(可能)保存未完成结帐的会话不会解锁由于错误而被锁定的存储库。请参阅下面的答案。 – trejder 2012-06-26 07:53:49

0

为什么你使用远程连接(通过Putty)到你的服务器上,在那里存放你的仓库和签出?你不能在你的本地计算机上使用任何SVN客户端(如Windows的TortoiseSVN),并在你的仓库中执行所有的操作?解决一些常见问题要容易得多。

某些存储库(或本地工作副本)上的SVN锁定是一个常见问题,大多数情况下都会出现某种错误。有很多方法可以解锁锁定的存储库。尝试谷歌周围找到他们。

根据您的存储库被锁定的程度,它们中的大多数可能会失败。在这种情况下,我总是使用所谓的“蛮力”模式。 I.e .:

  1. 检出当前版本的资料库到某个新文件夹。

  2. 将此文件夹的内容导出到另一个文件夹(获取所有没有SVN元数据的文件)。

  3. 删除第一个文件夹中的所有文件(您检出存储库的位置)。

  4. 将第二个文件夹(您导出的位置)中的所有文件复制(或移动)到第一个文件夹。

  5. 提交更改。

这是存储库许多问题的常见解决方案,包括锁定存储库的问题。

我强烈建议您在本地计算机上使用本地SVN客户端。不要在服务器上远程执行任何操作,除非你确实需要,而且你确实确信没有其他方法。