什么版本的控制系统最适合*防止*并发编辑?

时间:2009-08-28 19:39:36

标签: svn version-control mercurial cvs

我们多年来一直在使用CVS(使用TortoiseCVS接口)进行源代码控制和广泛的文档控制(包括Word,Excel,Framemaker,测试数据,模拟结果等二进制文件)。与典型的版本控制系统不同,99%的时间我们希望阻止并发编辑 - 当用户开始编辑文件时,文件的预编辑版本变得只读给其他人。

许多将使用它的人不是程序员,甚至不是计算机专家,所以我们也在寻找一个系统,让人们只需将文档添加到存储库,检出并编辑文档(除非是其他人)目前正在编辑它),并以最小的麻烦重新检查。

我们已经让这个与CVS + TortoiseCVS合作得很好,但我们现在正在考虑Subversion和Mercurial(如果他们更合适的话,可以向其他人开放)以获得更好的版本跟踪,所以我想知道哪个一个支持的锁定文件最透明。例如,我们希望启用独占锁定作为默认设置,并且我们希望尽可能让某人不小心开始编辑其他人已签出的文件。例如,当某人签出文件进行编辑时,即使他们最近没有更新过他们的沙箱,它也会先使用主数据库进行检查。也许它甚至不会让用户签出文件,如果它不在网络上并且无法与母舰签到。

8 个答案:

答案 0 :(得分:10)

Subversion提供强制锁定。设置Propoerty svn:needs-lock后,文件将以只读方式检出,用户需要将其锁定以获取可写的工作副本。没有其他用户可以从那里锁定相同的文件。

答案 1 :(得分:5)

我知道它不在您的名单上,但我们对Perforce感到满意。 您可以使用

阻止多次结帐
  

您的Perforce管理员可以使用   用于确保的p4 typemap命令   所有指定类型的文件(for   例如,//depot /.../*.gif为所有人   .gif文件)只能由一个打开   用户一次。见Perforce   命令参考有关详细信息。

答案 2 :(得分:4)

Subversion TortoiseSVN的声音符合条件。正如Arne Burmeister所提到的,您可以将其默认为需要锁定模式,其中每个签出的文件都是只读的,直到您锁定它为止。通过使用钩子,您可以在文件被锁定或解锁时通知其他用户。

TortoiseSVN与Windows资源管理器集成,因此几乎不需要精通计算机。

请注意,Subversion具有“窃取锁定”功能,但如果您希望通过使用PreLock挂钩,则可以禁用此功能。

答案 3 :(得分:2)

你提到Mercurial,尽管是Mercurial的开发人员,但我必须同意使用Subversion的建议。 Mercurial就是让人们以分布式方式发展。这包括进行私人提交,这些提交仅在以后与他人共享。换句话说 - Mercurial不会尝试锁定中央服务器上的文件(甚至没有中央服务器的概念)。

使用Subversion,它是一个很好的集中式修订控制系统,你会发现(我只尝试过开源系统,我对闭源系统一无所知)。如果您愿意,您仍然可以在旁边试验hgsubversion“。

答案 4 :(得分:1)

我知道IBM ClearCase阻止了这一点。我们在公司就是出于这个原因使用它。

答案 5 :(得分:0)

如果它只是文档(如word,excel等),你可以查看Alfresco的文档管理器,它的使用非常简单。

http://www.alfresco.com/products/dm/features/

答案 6 :(得分:0)

原始RCS。签出文件时,将其锁定:“co -l filename”。此后,直到你重新检查它(“ci filename”),没有人可以改变文件。

答案 7 :(得分:0)

我认为任何分布式版本控制,如水银或git,都不适合你。 SVN只有最基本的锁定功能 - 并且文件设置为只读,在某些办公工具中,这意味着你可以编辑它,然后发现你不能保存它,直到你检查出来,然后你检查它只是发现服务器版本不同,你要么丢失服务器版本,要么丢失本地版本。

我不敢相信我说的是,但如果你想以这种方式工作,那么视觉源安全是我所知道的唯一这样设计的系统。如果你想要一个更现代/更可靠的版本,请查看sourcegear的Vault - 尽管他们付出了巨大的努力来制作看起来像vss但在svn环境中运行良好的东西。

但也许专用的文档管理解决方案会更好 - 或者甚至可能是门户服务器。