什么是最好的方法来查看哪些文件被locking在Subversion中?

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

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

我们现在需要的是一个很好的/简单的方法来查看当前整个存储库中locking的所有文件(以及谁locking了它们)。 我在龟龟和Subclipse中探查了一下,但没有find我要找的东西。 我们的项目有很多级别很深的子目录,因此查看每个目录是非常耗时的。

我想要的是一个可以运行的报告,它列出了当前被locking的所有内容以及locking的内容。 获取这类信息的最好方法是什么?

你在找什么是svnadmin lslocks命令。

因为我们在Subversion版本库中保存了一些Word文档(使用svn:needs-lock ),所以我在工作中已经设置好了。 我有一个cron任务,每天都要检查锁的列表,并且给整个团队发送7天以上所有锁的报告。 这样我们就可以分辨出谁长期懒惰,坐在一份文件的locking副本上。

这可能不是你正在寻找的答案,但你应该试着说服经理人员,锁实际上不是最好的开发实践。 这里有很多关于这个主题的文章,所以在这里我不再重复。

当你从一个locking环境转到一个没有强制检出锁的环境时,起初你会认为这会导致混乱,但实际上并不是这样。 当两个人在同一个文件上工作时,SVN擅长合并更改,即使最终发生冲突,解决这个问题也不是那么糟糕。

比等候那些去关键文件吃午饭的人更好,或者更糟的是去度假。

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

您可以使用svn status --show-updates从本地签出发现锁,这将在服务器上locking的所有文件之前放置一个O

例如

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

请参阅svnbook了解更多详情