代码之家  ›  专栏  ›  技术社区  ›  ThatBlairGuy

在Subversion中移除僵尸锁

  •  3
  • ThatBlairGuy  · 技术社区  · 16 年前

    我正试图找到一种使用Subversion命令行工具移除僵尸锁的方法。最终的目标是通过一个钩子脚本来实现这一点,但是我还没有制定出在只有物理存储库路径时使用的命令行(使用svnadmin rmlocks似乎只适用于HEAD修订版中存在的锁。)

    理想情况下,我希望通过使用命令行工具的post-commit钩子脚本来实现这一点(我知道用于此目的的python脚本,但我们不希望在该服务器上安装python以供一次性使用。)我们是一家.NET商店,因此使用SharpSVN库创建工具也是一种可能,但唯一的解锁功能似乎是在SVNClient类中。

    所以实际上有两个问题:有没有一种方法可以用命令行工具来实现这一点?如果没有,有没有办法从SharpSVN开始(或者另一个图书馆?)

    我最近不得不重新审视这个问题,发现这个问题仍然在吸引流量。最初的问题和Don的回答中提到的python脚本后来转移到: http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/remove-zombie-locks.py

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

    3 回复  |  直到 13 年前
        1
  •  3
  •   Don    16 年前

    有一个 Python http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2369399 ). 我会使用它,如果你需要的话,我会把它翻译成.NET。

        2
  •  1
  •   ThatBlairGuy    16 年前

    • Svnadmin提供了一个命令行,用于删除具有存储库路径的锁,但它似乎不适用于僵尸锁。

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

        3
  •  1
  •   Wolfgang Winzer    8 年前

    如果您知道被僵尸锁定的已删除文件的存储库路径,那么它非常简单,一开始我简直不敢相信:

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

    尽管此文件的定义中不存在“已删除”(已删除)。不需要也不允许修改peg。这个 force 仅当锁来自其他用户时,选项才是必需的。

        4
  •  0
  •   Ali    6 年前

    您可以使用命令行工具svn以以下方式完成文件夹删除。 svn rm-m“不需要”svn://192.168.0.1/trunk/codes 现在svn响应错误,如svn:warning:W160040:No lock on path'/trunk/codes/abc.txt svn解锁-强制svn://192.168.0.1/trunk/codes/abc.txt (请参见使用svn路径而不是本地路径)