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

哇 - 感谢所有精彩的回复!

看来我应该澄清一些事情。我们是一家 MS 商店(金牌合作伙伴),我们主要从事 VB、ASP.NET、SQL Server、sharepoint 和 Biztalk 工作。我拥有 CS 学位,所以我在 DEC Unix 和 Slackware Linux 上完成了 x86 汇编 C、C++,“一时心不在焉”……

我对 VSS 的担忧是,现在我更多地通过 VPN 进行工作,VSS 的性能受到影响,我担心我们的 10+ y/o 版本 5 VSS 数据库将被淘汰......LAN 服务应该可以加快速度,但我从未使用过它,而且我不确定它是否有助于防止损坏 - 有人使用过 VSS LAN 服务吗?(VSS 2005 的新增功能)

有帮助吗?

解决方案

如果我是你,我可能会选择 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 的东西)。别误会——这并不是我讨厌 Subversion,而是我认识到它是另一个时代的工具,就像一把剃须刀。

其他提示

看起来 SubVersion 是这里的赢家。我会帮你自己一个忙并使用 视觉SVN服务器. 。它是免费的,并且可以为您省去很多安装麻烦。

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

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

无论你做什么,都不要为了改变而改变。

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

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

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

它速度很快,而且对我们来说非常稳定(300 多名开发人员使用 10 多年的代码库)。我们存储了几吨信息,并且反应非常灵敏。对于少量用户,假设您的服务器拥有良好的硬件,我怀疑您是否会遇到许多性能问题。

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

总结来说,我对 Perforce 的看法是:

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

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

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

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

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

我认为 Mercurial 比 Subversion 有很多其他优点,但它确实有一个很大的缺点,这已经被作为 Subversion 的优点提到了:有一个 地段 Subversion 的第三方工具和集成。由于 Mercurial 还没有出现那么久,所以选择就少得多。在 Windows 上,您似乎必须使用命令行(我的选择)或 乌龟汞 Windows 资源管理器集成。

VSS 太可怕了。我可能是在引导 Spolsky(不确定他是否这么说过),但使用 VSS 实际上比根本不使用源代码管理更糟糕。尽管它的名字是这样的 不是 安全的。它创造了安全的假象,但却没有提供安全。

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

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

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

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

我喜欢在我的个人项目中使用 Subversion。我可以查看功能列表,假装它带来了很多其他源代码控制系统没有的功能,但有很多好的功能,正确的选择实际上是风格问题。如果您在每次小改动后办理入住(即每个功能更改一次签入),那么许多人可以处理同一个源文件,几乎在任何事情中合并冲突的风险都非常低 VSS(我已经很多年没有使用过 VSS,但据我记得一次只有一个人可以处理一个文件。)如果这种情况永远不会发生在您身上,我觉得最好的做法是使用你所知道的。VSS 比没有源代码控制要好,但现在我感觉它有限制。

我不认为你已经没有希望了,因为你在问是否应该切换更好;当答案显而易见而你却忽略了证据时,你就绝望了。

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

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

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

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

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

如果有自由选择的话,我可能会选择Vault,但当时我的预算为零。

我正在寻找供个人使用的东西。使用 subversion 有理由,也有使用完全不同的东西的理由。我正在考虑的替代方案是 Vault(和以前一样,免费单次使用)和 Bazaar。GIT 我不得不毫不羞耻地抛弃我,因为我是一个 Windows 用户,但现在 GIT 却不是。

GIT 的分布式特性以及私人/临时签入的选项(假设我已经理解了我所读到的内容) 很有吸引力——所以我才看上芭莎。

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

墨菲

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

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

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

如果你只有 2 个人,并且大部分时间都是独立工作,那么 git 将为你提供更多的灵活性、更强大的功能,并且无疑是最快的合作者。

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

但是,如果您的知识深度仅扩展到 ASP 和 Visual Basic,则只需使用 Subversion。先走再跑。

** 我并不是想说如果你只知道 VB 你就很愚蠢或者类似的东西,但是 git 使用起来可能非常挑剔和挑剔(如果你在 C 中使用过 WinAPI,你就会知道关于挑剔和挑剔的一切)挑剔),并且您可能需要比 git 提供的更渐进的 SCM 介绍

如果你是一个人秀并且严格来说是一家微软商店,那么 SourceGear Vault 绝对也是切换的主要候选者。

特征:

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

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

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

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

  • 源代码控制
  • 工作项跟踪(需求、错误、问题、风险和任务)
  • 报告您的项目数据(工作项跟踪、构建、签入等在一个 qube 中)
  • 代码分析
  • 单元测试
  • 负载测试
  • 绩效分析
  • 自动构建
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top