为什么选择 Mercurial 作为 FogCreek Kiln的基础,这是一个具有紧密集成代码审查和 FogBugz 集成的源代码控制管理系统?
为什么是 Mercurial,而不是其他(分布式)版本控制系统,如 Bazaar、Git 或 Monotone,或者创建自己的版本控制系统,如Fossil(分布式软件配置管理,包括错误跟踪和 wiki)?
是什么特性让 FogCreek 选择 Mercurial 作为 Kiln 引擎?
原始答案(2009 年 11 月,GitHub 只有 1 年,Git 只有 4 年)
我真的不知道,但我会冒险“更好的 Windows 支持”,Windows 可能是他们大多数客户群的主要平台。
Git 仍然是一个太多的“unix/linux”产品,通过 mSysGit提供“有希望的”Windows 支持。
只需阅读一些MSysGitHerald文章的语气,比如第九篇:
在很长一段时间内,msysGit 都是由 Hannes、Steffen、Sebastian Schuberth 和我自己 [Johannes Schindelin] 组成的帮派推动的。在某个阶段,我感到非常沮丧,以至于我完全停止了 msysGit 的工作。原因很简单:它不再有趣了。太多人要求修复或增强,但没有人提供自己的贡献。由于我不是 Windows 用户(自 1994 年以来一直是一名快乐的 Linux 用户),mSysGit 上的工作对我来说并没有足够的回报让我继续。所以我停了下来。
但与此同时,情况发生了变化。
我们得到了...的贡献
在向 IT 老板推销该工具时,这并不能激发很大的信心。我对个人使用 Git 感到非常满意,并且非常感谢所有 mSysGit 贡献者的辛勤工作,但在一家大公司,我很难让 Git 成为我们 Windows 开发人员采用的默认 DVCS 工具。
两者都是因为学习曲线,但主要是因为还没有支持水平。
这只是个人意见,如果你有不同的成功部署 Git 的经验,你会更有力量。
Mercurial 是最接近 Git 的 DVCS,并且基于可移植的 Python 脚本(而不是基于 linux/unix 的 sh 脚本),它可能是一个务实的选择。
七年后的 2018 年更新:是的,Windows 对 Git 的支持现在已成为现实。
微软将其整个Windows 代码库整合到一个(巨大的)Git 存储库中:请参阅“地球上最大的Git 存储库”:350 万个文件,300GB,4,000 名工程师每天在 440 个分支中生成 1,760 个“实验室构建”,此外还有数千个 pull请求验证构建。
但这是添加了GVFS (Git Virtual FileSystem),它允许根据您使用的内容仅动态下载您需要的部分。
这还不是在 Git 原生中,尽管它的集成已于 2017 年 12 月开始,实施了窄/部分克隆。
Kiln是我们一流的 DVCS 托管解决方案,支持 Git 和 Mercurial!GitHub很棒。FogBugz 很棒。还有什么更好的呢?整合它们怎么样!每当传入的变更集评论提到案例时,GitHub Web Hooks 可以通知 FogBugz。
当我查看 DVCS 系统时,我喜欢Mercurial,因为。
也许Kiln 开发人员也是这么想的……
(所有主要的 DVCS 系统都足够好,否则其他因素会更多地发挥作用)
这个答案现在显然已经过时了,因为微软拥有 github,而 git 现在在 Windows 上非常普遍。
我不能代表 FogCreek,但我知道当我选择使用哪个 DVCS 时,很多人评论说 git 在 Windows 上不能很好地工作(除非它在 cygwin 中运行)。由于 FogBugz 被设计为在 Windows 或 Linux 系统上运行(据我了解——我自己不是用户),因此有一个额外的层(cygwin)来运行 git 可能是那里的决定因素。我对 Bazaar 或 Monotone 了解不多,因此无法提供任何反馈。
我认为 hg 与 git 的问题是一个红鲱鱼,因为单独的操作系统支持问题是一个主要区别。真正的问题是为什么是 hg 而不是 bzr,因为这两者非常相似,并且 hg 开发人员自己认为 bzr 是他们真正的竞争对手,反之亦然。在为 OpenSolaris 和 OpenJDK 选择 DVCS 时,Sun 对两者进行了广泛的评估。有人想知道在 FogCreek 采摘汞的过程是什么。到目前为止,我们得到的所有答案(除了操作系统支持问题)都是一般性的。
最大的新功能之一是 Kiln Harmony,它允许您使用 Git 或 Mercurial 在 Kiln 存储库上进行操作。因此,您可以使用 Git 将更改推送到 Kiln 存储库,然后使用 Mercurial 拉取它们。这意味着您永远不必决定是要使用 Git 还是 Mercurial。