40

我终于让我的团队从 SourceSafe 切换到 Subversion。不幸的是,我的经理仍然想在每个文件上使用排他锁。所以我在每个文件上设置了 svn:needs-lock 属性并创建了一个预提交钩子以确保该属性保持设置。

我们在 Linux 服务器上运行 Subversion。我们大多数人使用 Windows 机器,少数人使用 Mac。我们正在使用各种 SVN 客户端(TortoiseSVN、SmartSVN、Subclipse 等)。

我们现在需要的是一种好的/简单的方法来查看当前锁定在整个存储库中的所有文件(以及谁锁定了它们)。我在 Tortoise 和 Subclipse 中浏览了一下,但还没有找到我要找的东西。我们的项目有许多子目录,这些子目录是多层次的,因此查看每个单独的目录会太费时间。

我想要的是一个我可以运行的单一报告,其中列出了当前锁定的所有内容以及谁锁定了它。获取此类信息的最佳方式是什么?

4

4 回答 4

34

您正在寻找的是svnadmin lslocks命令。

我在工作中设置了这个,因为我们在 Subversion 存储库中保留了一些 Word 文档(带有svn:needs-lock)。我每天设置一个 cron 作业,检查锁列表并将所有超过 7 天的锁的报告通过电子邮件发送给整个团队。通过这种方式,我们可以知道谁在很长一段时间内一直在偷懒并坐在锁定的文档副本上。

于 2008-11-12T19:00:18.157 回答
22

这可能不是您要寻找的答案,但您应该尝试让经理相信锁实际上不是最佳开发实践。有很多关于这个主题的文章,所以我不会在这里重复。

当您从锁定环境转到没有强制签出锁的环境时,起初您认为这会导致混乱,但事实并非如此。SVN 擅长在两个人处理同一个文件时合并更改,即使最终出现冲突,修复它们也不错。

比等着那个拿着重要文件去吃午饭的人要好得多,或者更糟的是,去度假了。

于 2008-11-12T19:05:17.740 回答
22

要查看您和其他人持有什么锁,您可以使用 TortoiseSVN → 检查修改...。本地持有的锁令牌会立即显示。要检查其他人持有的锁(并查看您的任何锁是否损坏或被盗),您需要单击检查存储库。

于 2009-07-22T11:23:29.223 回答
22

您可以从本地结帐中发现锁,使用svn status --show-updates它将O 在服务器上锁定的所有文件之前放置一个。

例如

$ svn status --show-updates
     O      279532   LockedFile
?                    UncommittedFile
M           279532   ModifiedFile

查看svnbook了解更多详情

于 2012-03-20T11:02:47.663 回答