【问题标题】:Working with Subversion the same as with Visual Source Safe in Visual Studio在 Visual Studio 中使用 Subversion 与使用 Visual Source Safe 相同
【发布时间】:2011-01-27 05:48:26
【问题描述】:

在工作中,我刚开始使用带有 AnkhSVN 的 Subversion,而不是 Visual Source Safe。我设法将它整合得很好,但它似乎不一样。 使用 VSS 会发生以下情况:

用户通过右键单击并选择“签出”或通过编辑来签出文件。如果另一个用户试图修改同一个文件,他会得到一个错误。没有 2 个用户可以同时编辑同一个文件。没有花哨的合并。没有冲突,也没有解决冲突。

我理解 Subversion 背后的哲学是不同的,但有什么办法可以用 Subversion 复制上述行为?

AnkhSVN 中有一个名为“更改时自动锁定文件...”的选项,但即使我在编辑文件时激活此选项,它也不会自动锁定。 即使此选项有效,其他用户在提交文件之前也不会看到锁定。当他们尝试像在 Visual Source Safe 中那样编辑它时,他们不会收到错误。

所以基本上:可以使用 Subversion 和 AnkhSVN 复制 Visual Source Safe 的行为吗?

【问题讨论】:

  • 您为什么要这样做? Subversion 不是为这种过程设计的。如果您更喜欢 VSS 的工作方式,为什么不使用 VSS?
  • 好吧,我不能。选择了颠覆,我没有发言权。
  • @Thomas:我不会再将我的源代码信任给 VSS。我见过太多损坏的数据库,合并分支之间的更改真的是不可能的。 SVN 采用了一种方式来传达需要锁定的不可合并文件,而 AnkhSVN 以一种与 VSS 非常接近的方式实现了这一点。不过,我并不想在这里讨论 SVN 与 VSS :)
  • 那么如何从 AnkhSVN 添加 "svn:needs-lock" 还是必须从 Subversion 命令行添加?
  • 代理 SVN Visual Studio 有一个选项可以让您执行此操作。 zeusedit.com/agent

标签: visual-studio svn visual-sourcesafe ankhsvn


【解决方案1】:

使用颠覆而不是源代码安全的重点是您没有拥有排他锁,许多人可以在同一个文件上工作。

如果您开始将 SVN 与文件的排他锁一起使用,您将失去很多好处。

这个想法是在代码合并期间修复冲突。

请参阅this SO 问题和答案,了解有关这些问题的一些讨论 (Revision control locking: Is the jury still out?)。

【讨论】:

    【解决方案2】:

    Agent SVN 是一个用于 Subversion 的 MS-SCCI 插件(就像 VSS),因此它像 VSS 一样与 Visual Studio 集成。

    它还有一个结帐时锁定选项,加上这个功能,它确实感觉很像 VSS。

    【讨论】:

      【解决方案3】:

      您需要在要显式锁定的文件上设置svn:needs-lock 颠覆属性。它只推荐用于不容易合并的文件,比如(大多数)二进制文件,而不是文本/代码文件。通常文本/代码文件可以很好地自动合并,当它们不发生冲突时通常很容易解决。

      当您在设置svn:needs-lock 属性时尝试编辑文件时,AnkhSVN 会要求您锁定文件(与 VSS 中的签出相同)。如果启用“自动锁定文件”功能,锁定对话框将被抑制,您将锁定文件而不显示对话框。

      Svnbook 解释了the differences between a lock-modify-unlock and copy-modify-merge,同时也描述了svn:needs-lock 的行为

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多