我正在尝试找到一种使用 Subversion 命令行工具删除僵尸锁的方法。最终目标是通过挂钩脚本来完成此操作,但当您只有物理存储库路径时,我无法计算出要使用的命令行。(使用 svnadmin rmlocks 似乎仅适用于 HEAD 版本中存在的锁。)

理想情况下,我想使用命令行工具通过提交后挂钩脚本来完成此操作。(我知道用于此目的的 python 脚本,但我们不希望在该服务器上安装 python 用于此单一用途。)我们是一家 .NET 商店,因此使用 SharpSVN 库创建一个工具也是一种方法可能性,但唯一的解锁功能似乎是在 SVNClient 类中。

所以这实际上是两个问题:有没有办法使用命令行工具来做到这一点?如果没有,SharpSVN 有没有办法做到这一点?(或者也许是另一个图书馆?)

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

我最近不得不重新审视这个问题,发现这个问题仍然吸引着流量。原始问题和唐的回答中提到的 python 脚本已移至: http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/remove-zombie-locks.py (我想这就是大多数人正在寻找的。)

具有讽刺意味的是,尽管存储库已转移到 Linux,但我们仍在使用 C 解决方案。

有帮助吗?

解决方案 2

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

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

因此,使用 Subversion API 库用 C 语言重写 python 脚本。

其他提示

有一个的Python 脚本(此处引用: http://subversion.tigris.org /ds/viewMessage.do?dsForumId=1065&dsMessageId=2369399 )。我想无论是使用,或翻译为.NET,如果你需要的。

如果您知道要删除的文件,是僵尸锁定库路径,它是如此简单,我不能在第一次相信:

svn unlock --force https://path/to/my/file

这工作,即使被删除的文件确实(定义)在仓库中的头不存在。需要也不允许无peg修订版本。所述force选项仅必要的,如果锁是从另一用户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top