我们即将为开发项目设置subversion,其中大部分代码将在VisualStudio 2012中进行编辑。
为避免人们锁定文件,我们希望设置一个轮询机制,以便向其他人开始编辑特定文件的团队成员发出警告。此警告将告诉他们,如果他们确实进行了更改,他们将不得不将他们的更改与当前正在进行的其他正在进行的更改合并。
对于我可以轻松找到的轮询颠覆的唯一参考是Jenkins,但这不适合VS2012 / VisualSVN设置。
我原本预计监视远程svn状态的用例变化很常见。有人找到了解决方案吗?
设置某种形式的轮询,并且可能在提交时包含特殊属性,提交或不提交所有计算机上的triger更改的提交后挂钩可能会更难以出现。如果没有现有的解决方案,你可以指点我这么做吗?
答案 0 :(得分:3)
我认为SVN内置的内容不会为您做到这一点。这不是一个常见的用例,因为并发编辑由SVN处理gracefully,因此不被认为是值得通知其他开发人员的问题。
如果您希望在开发人员开始编辑SVN跟踪文件时收到通知,您可能需要自己开发一种机制。您可以在每个开发人员的计算机上运行一个脚本,每5分钟执行一次“svn status | grep ^ M”(或者与Windows相同的任何操作),然后将生成的文本输出发送到(自定义)服务器。然后,服务器可以比较从每台开发人员机器收到的文本,如果它与之前从该机器收到的文本不同,它可以通过电子邮件通知其他开发人员,以通知他们有关更改的信息。
但是,这似乎是为了获得不那么多的好处。我也想知道开发人员是否会发现过于干扰。
答案 1 :(得分:0)
SVN具有您可以在文件上设置的needs-lock属性,这意味着用户必须“锁定”该文件以进行编辑,并且一次只能存在一个锁。这主要是为了防止恶意冲突的二进制和其他非可合并文件。
它不是你想要的,因为它可以防止超过1个用户编辑该文件(但是,无论如何,如果你忽略它,获得警告并没有多大用处。)
SVN与VSS或TFS不同,你不需要担心2个人同时对文件进行更改 - SVN(尽管来自DVCS人员的一些粉丝主义)合并得很好。
您真正需要的是阅读Redbook,尤其是关于different ways of working with a VCS的内容。
如果您仍然认为需要结帐通知,则需要使用SVN和parse the logs运行Apache,因为SVN本身没有“结帐”挂钩。 (但是TortoiseSVN确实如此,你可能会喜欢使用它,但是有些人不会使用Tortoise,他们会在Visual Studio中使用VisualSVN或AnkhSVN。)