.Net项目的VSS或SVN?

时间:2009-03-27 17:41:21

标签: .net svn version-control visual-sourcesafe project-planning

在工作中,其中一位主管经理让我研究将我项目的当前源控制服务器(Visual Source Safe)更改为SVN可能带来的好处。

我真的没有任何反对SVN的东西,实际上我有点挖掘它,但我认为,改用SVN不会给项目带来任何重大好处,并会迫使我们使用一些第三方工具从Visual Studio管理源代码控制(我们主要使用Microsoft工具开发)。

所以,作为我研究的第一步,我问你:从VSS切换到SVN有什么好处?

16 个答案:

答案 0 :(得分:41)

SVN比VSS更受欢迎,并且具有很多优点。 VSS陈旧且过时。

现在许多开发人员正在从VSS迁移到SVN。如果您要在Google中搜索“SVN”和“VSS”,它会向您显示许多与VSS to SVN migration相关的文章。

  • VSS的锁定 - 修改 - 解锁模型使快速变化的文件上的协作成为一个主要问题。此外还需要管理员解锁有人在度假时检出的文件。
  • 使用VSS,这不是一个问题,你是否会丢失数据 - 它是什么时候。您的源存储库应该是一块石头 - 如果开发人员的工作站崩溃,您应该只丢失HIS更改。您不应该丢失存储库中的随机文件和数据
  • MS在6年多来没有维护过VSS。你能不能再得到它的支持了吗?
  • 如果您只有一个人登录到服务器(这意味着他们将开发工具保持打开状态,或者让VSS客户端保持运行状态),您可能无法获得VSS存储库的完整备份,具体取决于您的备份工具
  • VSS要求所有用户在文件系统级别(NTFS权限)几乎完全控制构成存储库的文件。
  • VSS没有好的,可用的,易于获得的已发布API,而且大多数情况下第三方工具都很薄弱。
  • 在VSS中合并很糟糕。
  • VSS:如果您的开发人员分布在多个时区,那么如果他们以错误的顺序检查太近,那么他们两人检查的行为都可能损坏数据库。

现在,这并不是说Subversion是完美无缺的 - 当然它可以做得更好,而它根本不做的事情。但所有与VSS和SVN合作的人很可能永远不会回到VSS。


如果您选择SVN。以下是您可能需要的工具列表:

  • AnkhSVN 是Visual Studio的Subversion SourceControl提供程序。
  • RapidSVN 是一个跨平台的Subversion客户端。
  • TortoiseSVN 是一款易于使用的Microsoft Windows SCM /源代码控制软件,可能是最好的独立Subversion客户端。
  • VisualSVN 是一个Visual Studio插件,它将Subversion和TortoiseSVN与Visual Studio无缝集成。
  • VisualSVN Server 是一个软件包,其中包含在Windows平台上为您的团队安装,配置和管理Subversion服务器所需的一切。它包括Subversion,Apache和管理控制台。

这是一本关于这个主题的好书:C {Pilato的Version Control with Subversion

Version Control with Subversion http://ecx.images-amazon.com/images/I/51iwjNGkQdL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg


VSS和SVN的另一个好的替代方案是SourceGear Fortress,它除了源控制之外还有问题跟踪系统 - 所有这些都集于一身。或SourceGear Vault - 仅限源控制。还有SourceAnyWhere解决方案。如果您需要Microsoft解决方案而不是使用TFS而不是VSS。

答案 1 :(得分:16)

Microsoft承认从未在任何内部项目中使用VSS(现在无法找到引用:/)。我用它两年,这是愚蠢的坏。数据库每周至少损坏一次。

此外,我最喜欢引用VSS用户的一件事是Eric Wadworth's页上的第一个引用,据报道来自微软的某个人:

"Visual SourceSafe?  It would be safer to print out all your code,
run it through a shredder, and set it on fire."

绝对适合SVN。 VSS就像是1000个恶魔的噩梦。

答案 2 :(得分:11)

考虑使用更现代的工具,例如GitMercurialDarcs。有很多优点,我会把谷歌搜索作为练习留给读者。

答案 3 :(得分:5)

我们使用SVN在我工作的地方,使用正确的文档,正确的客户端和工具,这是一个快速 - 到目前为止,它是高度可靠的工作。在VSS过去10年后,我可以说我不会错过它。

我非常喜欢SVN,我写了一篇关于我认为最有价值的客户(有些不是)和其他工具的评论。这是一篇新文章,因此非常及时:http://codertools.wordpress.com/2009/03/24/svn-subversion-clients-and-other-tools/

我会毫不犹豫地向任何人推荐SVN - GIT是我列表中的下一个... 希望这有用。

答案 4 :(得分:3)

避免源安全数据库崩溃的麻烦,将整个代码库与它一起使用是非常重要的。

不必担心签出文件的人是另一个。

答案 5 :(得分:2)

我发现与VSS合并文件非常麻烦,但SVN很棒。此外,我没有任何证据,但SVN似乎更快。

答案 6 :(得分:2)

VSS已经过时了。数据库经常被破坏。这也是MS建立TFS的原因。

SVN非常受欢迎(意味着很多社区支持,意味着免费支持),有许多工具可以与之挂钩(例如CruiseControl for Continuous Integration),而且使用起来相当简单。

如果您已经在使用VSS,那么您必须考虑学习曲线,这是您必须在研究中权衡的事情。如果其他开发人员没有使用SVN(或CVS),那么它可能会很昂贵,尽管你需要的只是一个真正了解系统然后指导其余部分的人。

我们4年前确实从VSS改为SVN,自那以后我们一直没有回头。

答案 7 :(得分:2)

顺便说一下,我们一直很愉快地使用Sourcegear Vault多年。拥有存储库和中央SQL Server数据库以及通过互联网的强大访问权限使其成为我们组织的一个扣篮。

我认为它价格合理,至少值得一看。

答案 8 :(得分:2)

AnkhSVN 2.0非常好。

如果您将Visual Studio集成作为一项要求,我会在一年前对SVN发出警告,但这种情况发生了很大变化。它仍然没有VS Team System那么好,但它比旧的基于MSSCCI的VSS集成要好得多。没有理由不将SVN与.NET一起使用。

答案 9 :(得分:2)

另一个“绝对SVN”在这里投票。我以前的工作是移民团队的一员。我无法告诉你摆脱VSS有多好。

  • 没有更多损坏的存储库
  • 更好的合并
  • 所以快得多
  • 便宜且易于分支
  • 没有更多的独家锁定
  • 非常轻松地将来源检查到多个位置

我可以继续,但VSS枷锁的记忆太痛苦了。说不。

答案 10 :(得分:1)

SourceGear Vault是VSS的绝佳替代品。它最初是“VSS功能但使用真实数据库”,并从那里发展。

答案 11 :(得分:1)

几乎绝对是SVN。 SVN采用不同的工作方式(复制 - 修改 - 合并而不是锁定 - 修改 - 解锁)。这是一个学习曲线,但现在情况已经好几年了,所以大多数开发者都必须在某个时间或其他时间学习它。锁定 - 修改 - 解锁是一种太多的痛苦,并且存在严重的协作问题,它实际上有助于解决,如果您感到好奇,我很乐意解释。

补充有关VSS有多糟糕的评论。以下是涵盖该主题的各种链接:

http://www.codinghorror.com/blog/archives/000660.html

http://www.developsense.com/testing/VSSDefects.html

http://wadhome.org/svn_vs_vss.html

编辑:另见: Source Control - Lock vs. Merge?

答案 12 :(得分:1)

作为经历过VSS的人说话 - >对于大型代码库的SVN转换过程,我想说最大的好处就是能够安静地睡觉,因为知道你的SCM系统不会突然出现打乱数据库的打嗝,你必须回到昨天的备份。你每天都备份你的数据库,对吗?

使用VSS,每个月至少发生一次腐败。使用SVN(相同的硬件和操作系统) - 两年内不会一次。

哦,分支/合并能力很好!

答案 13 :(得分:1)

当然,出于上述所有原因,请与SVN一起使用。你可以试试ankhsvn这是visual studio的svn插件。通过这种方式,您可以获得两全其美:使用SVN并且所有工作仍然可以在visual studio中完成。

答案 14 :(得分:0)

只是对Koista Navin的回答的补充。

他说:这是一本关于这个主题的好书:C Pilato的Subversion版本控制

有一个免费的在线版本:

http://svnbook.red-bean.com/

答案 15 :(得分:0)

Team Foundation Server是在.NET世界中开发的最佳选择。然而,它不是免费的,对于当前的版本2008,它可能非常昂贵。如果你有更高级别的Visual Studio程序包,你可以免费获得TFS工作组版本,允许5个用户访问,无需额外费用。

工作组版本有一些主要注意事项您必须使用TFS服务帐户的5个插槽之一,除非您将其设置为在将包含在TFS成员列表中的用户帐户下运行。另一种是,一旦达到5个用户限制,跳转到6个用户的成本相当惊人,因为当前的许可证要求包括需要为团队的每个成员购买服务器(几千美元)和CAL。向团队增加一名成员是一项相当高昂的成本。

然而,微软已经意识到这一点,并且正在改变2010年。您将不再需要购买服务器本身,只需要购买CAL。 TFS 2010 server licensing: It's included in MSDN subscriptions