使用纯函数式语言相比使用不纯的命令式语言有很多好处,但低级系统语言通常可以实现更高的性能,特别是在命令式语言中,因为它允许您指定CPU计算结果的确切步骤。
如果存在一个必须具备极高性能的工具列表,我会把版本控制系统放在首位,而git非常擅长这方面。然而,性能并不是git相对于其他版本控制系统的唯一优势。
git团队很好地处理了不安全的C代码,我从来不担心我的类型系统(或它所编写的语言的任何其他功能),那么为什么有很多Haskell开发人员在只使用最终产品时必须使用darcs呢?
使用纯函数式语言相比使用不纯的命令式语言有很多好处,但低级系统语言通常可以实现更高的性能,特别是在命令式语言中,因为它允许您指定CPU计算结果的确切步骤。
如果存在一个必须具备极高性能的工具列表,我会把版本控制系统放在首位,而git非常擅长这方面。然而,性能并不是git相对于其他版本控制系统的唯一优势。
git团队很好地处理了不安全的C代码,我从来不担心我的类型系统(或它所编写的语言的任何其他功能),那么为什么有很多Haskell开发人员在只使用最终产品时必须使用darcs呢?
Darcs管理patch集合而不是时间线历史记录。更多关于此的说明可以在darcs维基页面上获得,该页面记录了与Git的差异。这种差异体现在Darcs能够交互式地、无序地拉取patches。例如,您可以从“开发”到“测试”拉取所有标题匹配票号的commit patch。Darcs会自动确保拉取任何其他依赖于这些patches的patches。有了这个关键功能,您可能需要更少的分支和repos来维护。虽然在Git中在做工作之前创建一个branch非常有帮助,在Darcs中通常不是一个问题,只要您相关的commits提及相同的票号即可。我在一个10万行代码项目中广泛使用了基于这个流程的工作流。除了这个技术差异外,Darcs非常用户友好。有较少的命令,大多数默认情况下都是交互式的,并提示您该做什么。
由于Darcs的优点和易用性,我更喜欢它而不是Git,尽管我也经常在开源项目中使用Git。Darcs易于使用,即使您必须学习Git来为某些项目做出贡献,您仍然可以享受使用Darcs在其他项目中的好处。
我认为,一般来说,某些用户群体会倾向于使用某种技术。如果某项技术使用用户群体的语言,则尤其如此。另外,可能(虽然我不确定)Darcs的作者和/或最初的用户是相当知名的Haskell开发人员,因此具有更大的影响力。
还有其他例子,比如Mercurial似乎在Python社区更受欢迎,而其他编程语言则更多地使用Git。
一旦您使用了特定的软件,即使存在优势,将其切换到其他软件可能也不值得。
但是,老实说,请使用您最喜欢的软件。现在,几乎需要安装hg、git和svn,并了解基本的使用方法。如果您使用Haskell,则似乎需要将Darcs加入到这个列表中。