我终于让我的小组从SourceSafe切换到Subversion。不幸的是,我的经理仍然想在每个文件上使用独占锁。所以我在每个文件上设置了svn:needs-lock属性,并创建了一个预提交钩子,以确保该属性保持设置。
我们在Linux服务器上运行Subversion。我们大多数人使用Windows机器,少数人使用Mac。我们正在使用各种SVN客户端(TortoiseSVN,SmartSVN,Subclipse等)。
我们现在需要的是一个好的/简单的方法来查看当前锁定在整个存储库中的所有文件(以及锁定它们的人)。我在Tortoise和Subclipse中捅了一下,但还没找到我要找的东西。我们的项目有许多深层次的子目录,因此查看每个单独的目录太费时间了。
我想要的是我可以运行的单个报告,其中列出了当前锁定的所有内容以及锁定的内容。获得此类信息的最佳方式是什么?
答案 0 :(得分:34)
您正在寻找的是svnadmin lslocks
命令。
我在设置工作时因为我们在Subversion存储库中保留了一些Word文档(使用svn:needs-lock
)。我有一个cron作业设置,每天检查锁定列表并通过电子邮件向所有团队发送超过7天的所有锁定的报告。通过这种方式,我们可以判断谁长时间懒散并坐在锁定的文档副本上。
答案 1 :(得分:22)
这可能不是您正在寻找的答案,但您应该尝试说服经理锁定实际上不是最好的开发实践。那里有很多关于这个主题的文章,所以我不会在这里重复一遍。
当你从一个锁定环境转到一个没有强制结账锁定的环境时,首先你会认为它会导致混乱,但事实并非如此。当两个人在同一个文件上工作时,SVN擅长合并更改,即使你最终遇到冲突,修复它们并不是那么糟糕。
比等待那个带有关键文件的午餐的人要好得多,或者更糟糕的是,去度假。
答案 2 :(得分:21)
要查看您和其他人的锁定,您可以使用TortoiseSVN→检查修改....本地保存的锁定令牌会立即显示。要检查其他人持有的锁(并查看是否有任何锁损坏或被盗),您需要单击Check Repository。
答案 3 :(得分:21)
您可以使用svn status --show-updates
从本地结帐中发现锁定,这会在所有锁定在服务器上的文件之前放置O
。
e.g。
$ svn status --show-updates
O 279532 LockedFile
? UncommittedFile
M 279532 ModifiedFile
有关详细信息,请参阅the svnbook