1

我们即将为一个开发项目设置颠覆,其中大部分代码将在 VisualStudio 2012 中编辑。

为了避免人们锁定文件,我们希望建立一个轮询机制,以便向团队成员发出警告,告知其他人已经开始编辑特定文件。此警告将告诉他们,如果他们确实进行了更改,他们将不得不将他们的更改与当前正在进行的其他正在进行的更改合并。

我可以轻松找到的对轮询颠覆的唯一参考是Jenkins,但这不适合 VS2012/VisualSVN 设置。

我本来希望监视远程 svn 状态更改的用例很常见。有没有人找到解决方案?

设置某种形式的轮询,并可能在提交时为文件添加一个特殊属性,无论是否使用 post-commit 钩子来触发所有机器上的更改,这可能比看起来更困难。如果没有现有的解决方案,你能给我指点来设置它吗?

4

2 回答 2

3

我认为 SVN 中没有内置任何东西可以为您做到这一点。这不是一个常见的用例,因为并发编辑由 SVN优雅地处理,因此不被认为是值得通知其他开发人员的问题。

如果您想在开发人员开始编辑 SVN 跟踪文件时收到通知,您可能需要自己开发一种机制。您可以在每个开发人员的机器上运行一个脚本,该脚本每 5 分钟执行一次“svn status | grep ^M”(或任何 Windows 等效项),然后将生成的文本输出发送到(自定义)服务器。然后,服务器可以比较从每个开发人员机器接收到的文本,如果它与之前从该机器接收到的文本不同,它可以通过电子邮件向其他开发人员通知他们所做的更改。

不过,这似乎需要做很多工作,但收益并不大。我还想知道开发人员是否会觉得这太麻烦了。

于 2013-06-22T17:29:37.567 回答
0

SVN 具有可以在文件上设置的需求锁定属性,这意味着用户必须“锁定”文件以进行编辑,并且一次只能存在一个锁定。这本质上是用于二进制文件和其他不可合并的文件,以防止严重的冲突。

不过,它并不是您想要的,因为它会阻止超过 1 个用户编辑该文件(尽管如此,如果您仍然忽略它,得到警告并没有多大用处)。

SVN 不像 VSS 或 TFS,您不必担心 2 个人同时对文件进行更改 - SVN(尽管来自 DVCS 家伙的一些狂热分子)融合得很好。

您真正需要的是阅读红皮书,尤其是有关使用 VCS 的不同方法的部分

如果您仍然决定需要结帐通知,则需要使用 SVN 运行 Apache 并解析日志,因为 SVN 本身没有“结帐”挂钩。(但是 TortoiseSVN 可以,所以你可能喜欢使用它,但有些人不会使用 Tortoise,他们会在 Visual Studio 中使用 VisualSVN 或 AnkhSVN)。

于 2013-09-17T14:03:58.240 回答