在工作中我刚开始使用Subversion和AnkhSVN而不是Visual Source Safe。我设法将其整合得足够好,但看起来并不相同。 使用VSS会发生以下情况:
用户通过右键单击并选择“签出”或通过编辑来签出文件。如果另一个用户试图修改同一个文件,他将收到错误。没有2个用户可以同时编辑同一个文件。没有花哨的合并。没有冲突,没有冲突解决方案。
我理解Subversion背后的哲学是不同的,但有没有办法可以使用Subversion复制上述行为?
AnkhSVN中有一个名为“自动锁定文件更改...”的选项,但即使我在编辑文件时激活此选项,它也永远不会自动锁定。 即使此选项有效,其他用户也不会在提交文件之前看到锁定。当他们试图像在Visual Source Safe中那样编辑它时,他们不会收到错误。
基本上:使用Subversion和AnkhSVN可以复制Visual Source Safe的行为吗?
答案 0 :(得分:8)
在源安全上使用subversion是因为不拥有独占锁,许多人可以在同一个文件上工作。
如果您开始使用SVN上的独占锁定,那么您将失去SVN的许多好处。
这个想法是你在合并代码时修复冲突。
请参阅this SO问题和答案,以便对问题进行一些讨论(Revision control locking: Is the jury still out?
)。
答案 1 :(得分:6)
Agent SVN是Subversion的MS-SCCI插件(就像VSS一样),所以它就像VSS一样与Visual Studio集成。
它还有一个签出时锁定选项,并且它上面的功能确实感觉像VSS一样。
答案 2 :(得分:2)
您需要在要显式锁定的文件上设置svn:needs-lock
subversion属性。它实际上只推荐用于不能轻易合并的文件,如(大多数)二进制文件而不是文本/代码文件。通常文本/代码文件会自动合并,当它们不冲突时通常很容易解决。
当您在设置svn:needs-lock
属性时尝试编辑文件时,AnkhSVN会要求您锁定文件(与VSS中的结帐相同)。如果启用“自动锁定文件”功能,则会禁止锁定对话框,您将锁定文件而不显示对话框。
Svnbook解释the differences between a lock-modify-unlock and copy-modify-merge,并且还描述了svn:needs-lock行为