为什么选择darcs而不是git?

34

使用纯函数式语言相比使用不纯的命令式语言有很多好处,但低级系统语言通常可以实现更高的性能,特别是在命令式语言中,因为它允许您指定CPU计算结果的确切步骤。

如果存在一个必须具备极高性能的工具列表,我会把版本控制系统放在首位,而git非常擅长这方面。然而,性能并不是git相对于其他版本控制系统的唯一优势。

git团队很好地处理了不安全的C代码,我从来不担心我的类型系统(或它所编写的语言的任何其他功能),那么为什么有很多Haskell开发人员在只使用最终产品时必须使用darcs呢?


6
确实为什么?你是否真的见过人们从Git转向Darcs? - hasen
6
@hasen j:https://dev59.com/questions/j2855IYBdhLWcg3w1oLa :-) - GS - Apologise to Monica
8
这个问题完全没有意义。调优后的 Haskell 和调优后的 C 一样快。而且编写、调试和维护更容易。Darcs 比 Git 慢,因为它使用更丰富的模型并需要较慢的算法。这导致使用 Darcs 时需要查询,而不是像在命令行下“编程” Git。 - nomen
自从2008年开始使用Git以来,我发现了这个问题——最近每当我需要在大型项目中使用Git时,一个顽固的想法总是不断地在我脑海中浮现——我并没有成为其基于快照模型的粉丝。我怀疑我对Git的使用方式可能有些“逆向思维”,尤其是它坚持采用基于快照的工作流程,但我必须承认,即使对于那些没有促使我考虑补丁和其他版本控制系统的项目,我现在本能地想到补丁和补丁集以及如何将它们组合起来——但是在Git中并不容易实现。 - Armen Michaeli
2个回答

74

Darcs管理patch集合而不是时间线历史记录。更多关于此的说明可以在darcs维基页面上获得,该页面记录了与Git的差异。这种差异体现在Darcs能够交互式地、无序地拉取patches。例如,您可以从“开发”到“测试”拉取所有标题匹配票号的commit patch。Darcs会自动确保拉取任何其他依赖于这些patches的patches。有了这个关键功能,您可能需要更少的分支和repos来维护。虽然在Git中在做工作之前创建一个branch非常有帮助,在Darcs中通常不是一个问题,只要您相关的commits提及相同的票号即可。我在一个10万行代码项目中广泛使用了基于这个流程的工作流。除了这个技术差异外,Darcs非常用户友好。有较少的命令,大多数默认情况下都是交互式的,并提示您该做什么。

由于Darcs的优点和易用性,我更喜欢它而不是Git,尽管我也经常在开源项目中使用Git。Darcs易于使用,即使您必须学习Git来为某些项目做出贡献,您仍然可以享受使用Darcs在其他项目中的好处。


6
6年后,对于我与他人合作的任何项目来说,Git 是必不可少的。Git 的存储模型有助于提高性能,但我仍然希望有人可以在 Git 存储模型的基础上构建更多 Darc 的用户界面。Darc 的用户界面将更易于新用户学习。 - Mark Stosberg
1
这个“动态分支创建”对我来说毫无意义,因为它允许您创建从未打算工作的代码库。 - Jimmy T.
@MarkStosberg,所以存储模型比无分支模型的好处更重要? - Erik Kaplun
@MarkStosberg 你觉得 https://github.com/ganwell/git-darcs 怎么样?它使用 git 作为协作“后端”,但使用 darcs 作为 UI“前端”。 - Erik Kaplun

24

我认为,一般来说,某些用户群体会倾向于使用某种技术。如果某项技术使用用户群体的语言,则尤其如此。另外,可能(虽然我不确定)Darcs的作者和/或最初的用户是相当知名的Haskell开发人员,因此具有更大的影响力。

还有其他例子,比如Mercurial似乎在Python社区更受欢迎,而其他编程语言则更多地使用Git。

一旦您使用了特定的软件,即使存在优势,将其切换到其他软件可能也不值得。

但是,老实说,请使用您最喜欢的软件。现在,几乎需要安装hg、git和svn,并了解基本的使用方法。如果您使用Haskell,则似乎需要将Darcs加入到这个列表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接