16

在工作中,一位负责人让我研究将我的项目的当前源代码控制服务器(Visual Source Safe)更改为 SVN 可能有什么好处。

我真的没有反对 SVN,其实我有点挖,但在我看来,改成 SVN 不会给项目带来任何显着的好处,并且会迫使我们使用一些第三方工具来管理来自 Visual Studio 的源代码控制(我们主要使用 Microsoft 工具进行开发)。

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

4

16 回答 16

41

SVN 比 VSS 更受欢迎,并且有很多优点。VSS 是旧的和过时的。

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

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

现在,这并不是说 Subversion 是完美无缺的——它肯定有一些事情可以做得更好,而它根本没有做一些事情。但是所有使用 VSS 和 SVN 的人很可能永远不会回到 VSS。


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

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

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

使用 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。

于 2009-03-27T17:42:39.803 回答
16

微软承认从未在他们的任何内部项目中使用过 VSS(虽然现在找不到参考资料:/)。我用了两年,它是愚蠢的坏。数据库每周至少损坏一次。

此外,我最喜欢引用 VSS 用户的话之一是Eric Wadworth页面上的第一句话,据报道来自微软的某人:

"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 个恶魔的噩梦。

于 2009-03-27T18:02:08.713 回答
11

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

于 2009-03-27T18:13:35.550 回答
5

我们在我工作的地方使用 SVN,并使用正确的文档、正确的客户端和工具,这很容易——到目前为止,它的使用非常可靠。在与 VSS 一起度过了过去 10 年之后,我可以说我一点也不怀念它。

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

我会毫不犹豫地向任何人推荐 SVN - GIT 是我要查看的下一个列表。希望这会有所帮助。

于 2009-03-27T18:14:14.237 回答
3

避免 Source Safe 数据库崩溃带来的令人头疼的问题是占用您的整个代码库。

不必担心谁签出了文件是另一回事。

于 2009-03-27T17:43:54.607 回答
2

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

于 2009-03-27T17:44:22.967 回答
2

VSS 是旧的和过时的。数据库经常损坏。MS 也构建 TFS 是有原因的。

SVN 非常流行(意味着大量的社区支持,意味着免费支持),有许多与之挂钩的工具(例如用于持续集成的 CruiseControl)并且使用起来相当简单。

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

4 年前我们确实从 VSS 更改为 SVN,从那以后我们就再也没有回头。

于 2009-03-27T17:51:53.213 回答
2

顺便说一句,我们多年来一直非常愉快地使用 Sourcegear Vault。拥有存储库和中央 SQL Server 数据库以及通过 Internet 进行的良好访问使其成为我们组织的灌篮高手。

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

于 2009-03-27T17:55:31.553 回答
2

AnkhSVN 2.0真的很不错。

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

于 2009-03-27T18:07:52.707 回答
2

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

  • 不再有损坏的存储库
  • 更好的合并
  • 快得多_
  • 便宜又容易的分支
  • 不再有排他锁
  • 非常容易地检查源到多个位置

我可以继续,但VSS镣铐的记忆太痛苦了。拒绝吧。

于 2009-03-27T18:13:17.280 回答
1

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

于 2009-03-27T17:53:41.557 回答
1

几乎肯定是SVN。SVN 采用不同的工作方式(复制-修改-合并而不是锁定-修改-解锁)。这是一条学习曲线,但这是几年来一直如此,所以大多数开发人员无论如何都必须在某个时间或其他时间学习它。Lock-Modify-Unlock 太痛苦了,它实际上会导致严重的协作问题,如果您好奇,我很乐意解释。

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

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

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

http://wadhome.org/svn_vs_vss.html

编辑:另请参阅: 源代码控制 - 锁定与合并?

于 2009-03-27T17:57:38.880 回答
1

作为一个经历过 VSS -> SVN 转换过程的大型代码库的人,我想说最大的好处是能够安然入睡,因为知道您的 SCM 系统不会突然出现损坏数据库并且您必须返回的问题到昨天的备份。你每天都备份你的数据库,对吧?

使用 VSS,每个月至少会发生一次损坏。使用 SVN(相同的硬件和操作系统)——两年多一次。

哦,分支/合并功能很不错!

于 2009-03-27T18:16:11.300 回答
1

当然,出于上述所有原因,请使用 SVN。你可以试试ankhsvn,它是 Visual Studio 的 svn 插件。这样您就可以两全其美:使用 SVN 并且所有工作仍然在 Visual Studio 中完成。

于 2009-12-10T15:53:18.863 回答
0

只是对 Koista Navin 答案的补充。

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

有一个免费的在线版本:

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

于 2009-05-08T14:42:10.580 回答
0

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

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

但是,Microsoft 已经意识到这一点,并将在 2010 年改变这一点。您将不再需要购买服务器本身,而只需要购买 CAL。TFS 2010 服务器许可:它包含在 MSDN 订阅中

于 2009-12-10T16:02:57.083 回答