2010-02-26 62 views
3

我试图找到一种方法来删除使用Subversion命令行工具的僵尸锁。最终的目标是通过钩子脚本完成此任务,但是当您只有物理存储库路径时,我无法解决命令行的问题。 (使用svnadmin rmlocks似乎只适用于存在于HEAD版本中的锁。)在Subversion中删除僵尸锁

理想情况下,我想通过使用命令行工具的提交后脚本脚本来执行此操作。 (为此目的,我知道python脚本,但我们不希望在该服务器上安装python以供单次使用)。我们是一个.NET商店,因此使用SharpSVN库创建工具也是一个可能性,但唯一的解锁能力似乎在SVNClient类。

所以这真的是两个问题:有没有办法使用命令行工具来做到这一点?如果没有,有没有办法从SharpSVN做到这一点? (或者另一个库?)

==更新2012年12月3日==

我不得不重新审视最近这个问题,并发现了这个问题仍然是绘画的流量。在原始问题中提到的python脚本和Don的答案已经转移到:http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/remove-zombie-locks.py(我认为这是大多数人都在寻找的。)

具有讽刺意味的是,即使存储库已转移到Linux,我们使用的是C解。

回答

1

看起来答案是“你不能从这里到达那里。”

  • Svnadmin提供了一个用于删除存储库路径锁的命令行,但它似乎不适用于僵尸锁。
  • SharpSVN主要是客户端;它有一些连接存储库路径的方法,但这些(每个文档)主要用于库的单元测试。

因此,使用Subversion API库在C中重写python脚本。

+0

**,但它似乎不适用于僵尸锁**不,它的工作原理,如果你知道过时的锁的路径。 – bahrep 2014-10-27 12:21:11

+0

@bahrep - 我在写这个答案之前测试了它。据我记得(它*为* 4 1/2年前),svnadmin对当前修订版本中存在的文件工作正常,但如果该文件已被标记为已删除,则失败。从那时起事情就有可能发生变化。这个问题仍然会产生一定的流量,所以如果你可以提供一个使用svnadmin来完成任务的钩子脚本,它可能会对其他人有用,我会很乐意改变我接受的答案。 – ThatBlairGuy 2014-11-18 18:51:30

2

有一个Python脚本(在这里引用:http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2369399)。我要么使用它,要么将它翻译成.NET。

+0

这是我在我的问题中提到的脚本。我一直无法找到与svn_repos_fs_unlock方法等效的命令行。 (svnadmin rmlocks似乎只能用于锁定HEAD版本。)同样,在SharpSVN中,唯一可用的解锁方法在客户端。 – ThatBlairGuy 2010-03-01 15:10:37

+0

对不起,不知道我是如何跳过你提到Python脚本的。我基本上回答了你自己的问题... SharpSVN是一个围绕客户端API的.NET包装,因此如果开发者已经实现了相同的调用应该是可用的。我搜索了源代码中的svn_repos_fs_unlock方法,但没有找到它。你可能想问一下SharpSVN论坛,http://sharpsvn.open.collab.net/ds/viewForumSummary.do?dsForumId=728,只是为了确保。如果您对C感到满意,可以直接调用API。 – Don 2010-03-01 17:18:46

+0

谢谢。如果涉及到这一点,调用API是一种可能性,我认为如果合适的轮子已经存在,我会尽快避免。 – ThatBlairGuy 2010-03-01 17:32:24