12

我已经为同一个雇主编程了 10 多年,我们曾经使用过的唯一源代码控制是 VSS。(对不起 - 这就是我开始时他们所拥有的)。我们当中只有几个人;现在两个,我们通常单独工作,所以 VSS 对我们来说工作正常。所以,我有两个问题:1)我们是否应该切换到其他东西,比如 subversion、git、TFS 等,究竟是什么以及为什么(请)?2)我是否因为 VSS 腐蚀了我(正如 Jeff 所说)而超出了所有希望并注定要遭受永恒的诅咒?

哇 - 感谢所有伟大的回应!

听起来我应该澄清一些事情。我们是一家 MS 商店(金牌合作伙伴),我们主要做 VB、ASP.NET、SQL Server、sharepoint 和 Biztalk 工作。我有计算机科学学位,所以我在 DEC Unix 和 Slackware Linux 上完成了 x86 汇编 C、C++ 和 Slackware Linux。

我对 VSS 的担忧是,现在我在 VPN 上工作的时间越来越多,而且 VSS 的性能很差,我担心我们 10+ y/o 版本 5 的 VSS 数据库会被占用……有 LAN 服务应该加快速度,但我从未使用过它,我不确定它是否有助于腐败 - 有人使用过 VSS LAN 服务吗?(VSS 2005 的新功能)

4

16 回答 16

28

如果我是你,我可能会选择 Subversion。在这一点上,我是一个完全的 Git 狂热者,但 Subversion 肯定有一些优势:

  • 简单
  • 大量可互操作的工具
  • 积极和支持的社区
  • 便携的
  • 具有非常好的 Windows shell 集成
  • 与视觉工作室集成(我认为 - 但肯定是通过第三方)

Git 有很多很多其他的优点,但是当人们问像上面这样的一般性问题时,上面往往是人们关心的。

编辑:我现在工作的公司正在使用 VisualSVN 服务器,它是免费的。它使在 Windows 服务器上设置 Subversion 存储库变得非常简单,在客户端上我们使用 TortoiseSVN(用于 shell 集成)和 AnkhSVN 用于 Visual Studio 支持。它非常好,即使是 VSS 用户也应该很容易上手。

后期编辑:所以....将近八年后,我永远不会以任何理由向任何人推荐 Subversion。我并没有真正放弃,就其本身而言,因为我认为我的建议在当时是有效的。然而,在 2016 年,Subversion 几乎没有保留过去与 Git 相比的优势。Git 的工具优于(而且更加多样化)它曾经的工具,特别是 GitHub 和其他优秀的 Git 托管服务提供商(BitBucket、Beanstalk、Visual Studio Online,就在我的脑海中)。Visual Studio 现在提供了开箱即用的 Git 支持,它实际上非常好。甚至还有 PowerShell 模块可以为控制台的用户提供更原生的 Windows 体验。Git 比 Subversion 更容易设置和使用,并且不需要服务器组件。Git 已经变得像任何单一工具一样无处不在,而你真的只会欺骗自己不使用它(除非你真的想使用非 Git 的东西)。大学教师'

于 2008-08-28T03:44:07.753 回答
10

看起来 SubVersion 是这里的赢家。我会帮自己一个忙并使用VisualSVN Server。它是免费的,可以为您省去很多安装上的麻烦。

于 2008-08-28T04:20:01.863 回答
9

如果您习惯了 VSS 的工作方式,请查看(不是双关语)Sourcegear 的保险库。这是从 VSS 迁移的绝佳方式,因为它带有 IDE 集成并支持签出/签入,但是当您准备好并感觉舒适时,您也可以迁移到 SVN 中的编辑更新提交编程风格。

它对单个开发人员免费,在 IIS 上运行并基于 .net 构建,因此它应该是您可以切换到的一个相当熟悉的堆栈。

于 2008-08-28T03:55:46.243 回答
6

不管你做什么,不要为了改变而改变。

如果它对您有用并且您没有遇到任何问题,我认为没有任何理由切换。

于 2008-08-28T03:48:35.310 回答
6

就其价值而言,如果您真正坚持 1 或 2 个用户,Perforce 是一个潜在的选择。当前的 perforce 文档说您有 2 个用户和 5 个客户端,而无需开始购买许可证。

根据您的工作流程以及是否需要按照 perforce 的方式进行分支,您可能有理由切换到 perforce。对这里提到的其他一些产品不太熟悉,我无法告诉你 perforce 在功能部门中与分支等方面的比较。

它速度很快,而且对我们来说是坚如磐石(300 多名开发人员在一个 10 多年的代码库上)。我们存储了几条信息,它的响应速度非常快。对于少数用户,我怀疑假设您的服务器拥有良好的硬件,您会遇到许多性能问题。

之前使用过 VSS,我相信您可以从更好的 SCM 系统中获得很多好处,因此无论您是否损坏都应该考虑切换。单独分支可能对您来说是值得的。真正的客户端/服务器模型、更好的界面(以编程方式和命令行方式)是其他一些可以真正帮助改善工作流程并在一定程度上提高生产力的东西。

总之,我对 Perforce 的看法是:

  • 它快速且非常可靠
  • 大量跨平台客户端工具(windows、unix、mac 等)
  • 它对 2 个用户和 5 个客户免费
  • 集成到开发人员工作室(和其他工具)
  • 拥有强大的分支系统(可能适合您,也可能不适合您)。
  • 有几个可编写脚本的接口(python、perl、ruby、C++)

当然是 YMMV——我只提供这种替代方案,作为可能值得研究的东西。

于 2008-09-04T15:31:37.343 回答
5

我最近开始在我的一些工作中使用Mercurial。它是一个类似于 Git 的分布式系统,但似乎更易于使用,并且在 Windows 上得到更好的支持,后者对我来说至关重要。

通过分布式源代码控制,每个用户都拥有存储库的完整本地副本。如果您是一个项目的唯一工作人员,正如您经常说的那样,这可以大大简化事情,因为您只需创建自己的存储库并在本地完成所有提交等。如果您以后想邀请其他开发人员,您可以将存储库的全部内容(当前版本和所有历史记录)推送到另一个系统,或者在共享服务器上,或者直接到另一个用户的工作站上。

如果您只使用本地存储库,请记住您还需要一个备份解决方案,因为在共享服务器上没有所有代码的副本。

我认为 Mercurial 与 Subversion 相比有很多其他优势,但它确实有一个很大的缺点,已经提到了 Subversion 的一个优点:Subversion 有很多第三方工具和集成。由于 Mercurial 几乎没有出现,因此选择要少得多。在 Windows 上,您似乎必须使用命令行(我的选择)或TortoiseHg Windows Explorer 集成。

于 2008-08-28T06:45:37.973 回答
5

VSS 太可怕了。我可能在引导 Spolsky(不确定他是否这么说),但使用 VSS 实际上比根本不使用源代码控制更糟糕。尽管它的名字,它并不安全。它在不提供安全的情况下创造了安全的错觉。

如果没有 VSS,您可能会定期备份您的代码。使用 VSS,您会想,“嗯,它已经在源代码控制之下。为什么还要麻烦备份?” 很好,直到它破坏了你的整个代码库并且你失去了一切。(顺便说一句,这发生在我工作的一家公司。)

尽快摆脱 VSS 并切换到真正的源代码控制解决方案。

于 2008-09-04T15:57:36.110 回答
4

不用担心 VSS 损坏您,担心 VSS 损坏您的数据。它在该部门没有良好的记录。

如果您不切换到不同的版本控制系统,请经常备份。即使使用其他 SCM,也应该每天都进行备份,但对于 VSS,它的重要性加倍。

于 2008-08-28T04:15:30.363 回答
3

我喜欢在我的个人项目中使用 Subversion。我可以列出功能列表,假装它带来了很多其他源代码控制系统没有的功能,但是那里有很多好的功能,正确的选择确实是风格问题。如果您在每次小的更改后签入(即每个功能更改一次签入),那么许多人可以在同一个源文件上工作,而在除 VSS 之外的几乎任何东西中合并冲突的风险都非常低我多年来没有使用过 VSS,但从我记得一次只有一个人可以处理文件。)如果这永远不会发生在你身上,我觉得最好的做法是使用你所知道的。VSS 总比没有源代码控制要好,但这些天我觉得它有限制。

我不认为你没有希望,因为你在问是否会更好。当答案很明显而你忽视证据时,你就没有希望了。

即使您不更改源代码控制系统,您也应该选择像 SVN 或 git 这样的系统,并花几个星期阅读它并使用它制作一个小项目;它总是有助于磨锯。

于 2008-08-28T03:45:34.240 回答
2

我不同意那些说如果你没有问题最好不要切换的人。

我认为 SCM 是优秀开发人员应该熟悉的一些学科,坦率地说,即使您掌握了 VSS,您也只是在尝试一个好的 SCM 工具和 SCM 策略可以为您和您的团队带来的一小部分优势。

显然,首先在非生产环境中评估和测试替代方案。

于 2008-08-28T07:51:25.443 回答
2

在工作中,我们使用 TortoiseSVN 进行颠覆 - 效果很好,但它在哲学上与 VSS 不同(如果只有你,这不是真正的问题,但值得注意)。我真的很喜欢整个存储库都有一个修订号的事实。

如果可以自由选择,我可能会选择保险库,但当时我的预算为零。

我正在寻找供个人使用的东西。有理由使用颠覆,也有理由使用完全不同的东西。我正在考虑的替代方案是 Vault(和以前一样,免费供一次性使用)和 Bazaar。GIT 我不得不承认我是一个 Windows 用户,而现在 GIT 不是。

GIT 的分布式特性和私人/临时签入的选项(假设我已经理解了我所读的内容)很有吸引力——因此我关注了 Bazaar。

更新:我做了更多的挖掘和玩,实际上我选择了 Mercurial 供个人使用,与 TortoiseHg 的集成安装使事情变得非常简单,而且似乎很受好评。我仍在尝试解决如何强制将提交的自动镜像镜像到服务器,并且忽略功能似乎有一些小的限制,但到目前为止它做得很好......

墨菲

于 2008-08-28T08:17:23.947 回答
1

我会说坚持对你有用的东西。除非您遇到 VSS 问题,否则为什么要切换?Subversion 很强大,虽然开始使用它有点难。TFS 比 VSS 好得多,尽管对于这样一个小团队来说它相当昂贵。我没有用过 git,所以我真的不能和它说话。

于 2008-08-28T03:44:15.100 回答
1

我使用 vss 多年,直到大约两年前切换到 svn。我对 vss 最大的抱怨是网络性能差(这个问题现在可能已经解决了)和文件的悲观锁定。svn 解决了这两个问题,易于设置(我使用 collabnet 服务器和 tortoisesvn 客户端,尽管有两个很好的 Visual Studio 插件:visualsvn - 商业和 ankhsvn - 开源),易于使用和管理,并且有据可查。

很容易说“如果它没有损坏,那么就不要修复它”,但你会学习一个更现代的源代码控制工具,也许更重要的是,使用源代码控制的新方法(例如更频繁的分支和合并)新工具将支持。

于 2008-08-28T03:58:45.160 回答
1

如果你只有 2 个人,而且你大部分时间都是独立工作,那么 git 会给你更多的灵活性和力量,并且是最快的。

然而,使用起来很痛苦。使用 VSS,你显然是在为 windows 编程——如果你在 C 中做 Win32 API 的东西,那么 git 将是一个学习曲线,但会很有趣。

但是,如果您的知识深度仅扩展到 ASP 和 Visual Basic,则只需使用颠覆。在你能跑之前先走。

** 我不是想说如果你只知道 VB 你是笨蛋或类似的东西,但 git 可能非常挑剔和挑剔(如果你在 C 中使用过 WinAPI,你就知道所有关于挑剔和挑剔),并且您可能想要比 git 提供的更渐进的 SCM 介绍

于 2008-08-28T04:28:47.897 回答
1

如果您是单人秀并且严格来说是 Microsoft 商店,那么SourceGear Vault绝对也是转换的主要候选人。

特征:

  • 单用户免费,非常适合您
  • 它使用 SQL Server 作为后端,因此数据可靠性非常高
  • 它具有原子签入,同时签入的所有文件都排列在一个组中,称为变更集。
  • VisualStudio 集成。
  • 有一个从 SourceSafe 导入的工具,因此您可以保留您的历史记录
  • 客户端通过 HTTP 与服务器通信,因此可以非常轻松地设置远程访问办公室外的源并且性能良好,因为它们只传输正在提交和接收的更改的增量。您可以使用 SSL 来保护连接。

我肯定会认为这是一种选择。

于 2008-09-04T16:02:51.027 回答
1

如果您想要一个包中的完整生命周期,那么您可能想要查看 Visual Studio Team System。它确实需要服务器,但您可以从 MS 获得“行动包”,其中包括您从合作伙伴中心获得的“Team Foundation Server Workgroup Edition”所需的所有许可证。

有了这个,您将获得错误、风险和问题跟踪以及许多其他功能 :)

  • 源代码控制
  • 工作项跟踪(需求、错误、问题、风险和任务)
  • 报告您的项目数据(一个qube中的工作项跟踪、构建、签入等)
  • 代码分析
  • 单元测试
  • 负载测试
  • 性能分析
  • 自动构建
于 2008-09-16T11:38:57.173 回答