考虑改用Mercurial或Git?我们也是。 我目前正在研究DVCS的好处,结果是巨大的,欲望和必须。
我很想听听社区的典型使用模式。
让我们为DVCS创建一个“前N”生产力功能列表(基于Mercurial,Git或类似)。
请描述证明对您/您的团队有效的工作流程,DVCS帮助您实现/改进的程序以及DVCS为您提供的直接“好东西”(不要认为新手用户很清楚) )。
我认为这样的列表可以帮助那些接近团队的人提出DVCS建议。
这个问题显然是社区维基。
答案 0 :(得分:19)
一个真正的实际杀手特征是......
<强>合并强>
DVCS(Git,Mercurial或其他)用于合并(正因为,分发,合并是允许这些工具快速集成来自各种远程存储库的代码的关键特性)。 SVN无法完成任务(即使是今天) 参见:
答案 1 :(得分:11)
从发布中分离
这对于较大的功能很重要,因为这意味着可以使用系列提交来实现一个功能(每个提交都很小并且是自包含的,以便通过平分历史来轻松查找错误)只有当他们准备好发表它们时才会满意。
这种方法的一个变体是具有单独的公共存储库,其中可重组分支正在进行中,并且仅在分支准备好进行检查时才推送(或发送拉取请求)。
答案 2 :(得分:5)
对于我们来说,似乎“杀手级应用”将成为通过阶段推送代码的可能性。
我们将拥有DEV repo,所有开发者都会推进它。 QA repo将接受来自DEV repo的推送,并将构建其用于测试的代码版本。一旦测试完成,他们会将代码推送到生产仓库(QA仓库是唯一可以推动生产仓库变更的仓库),从中可以构建“生产”版本。
这在Joel的hginit (near the bottom of the page)中简要概述。
一旦我们实际执行了上述设置,我将更新此帖子。
答案 3 :(得分:3)
对于 OSS项目:
贡献率低的进入障碍
首先,大多数DVCS都有很好的工具来处理补丁(通常通过电子邮件发送),既可以创建它们也可以应用它们。贡献者可以使用任何工具创建补丁(尽管最好使用项目使用的DVCS创建补丁,因为一些DVCS在补丁中添加额外信息),并将其发送到项目的邮件列表,或直接发送给项目维护者,或将其附加到问题跟踪器中的错误报告/功能请求。
其次,您不需要提交位来贡献。只需克隆项目存储库,您就可以使用DVCS的全部功能。然后,您可以发送补丁或拉取请求,或推送到“暴徒”分支;有很多种可能性。
项目维护者也是一个优势:他/她不必担心他/她可以信任谁提供“提交位”,即访问存储库,就像CVCS中的情况一样。卡尔福格尔在Producing Open Source Software. How to Run a Successful Free Software Project.中写道,他发现对于项目来说更好的是访问控制等限制更好地是社交而非技术;由于不需要决定是否提供提交许可,DVCS更进一步。
答案 4 :(得分:2)
大多数功能可离线使用
使用像Subversion这样的集中式VCS,离线时唯一能做的就是编辑内容。有些系统确实提供了对其他功能的有限访问(例如在Subversion中你可以差异并从repo恢复到最新版本),但大多数使VCS有用的东西,即
仅在连接到中央服务器时才可用。
使用DVCS,上述所有操作都在本地运行,如果需要进入中央服务器,您可以在以后再次在线时将其推送到那里。
如果您总是在线(例如在办公室),这可能并不重要,但如果您经常需要离线工作,例如在旅途中或在家中使用不稳定的连接时,这可能是至关重要的。
我开始专门使用git因为我经常在路上工作而且通常没有(可靠的)连接。
答案 5 :(得分:1)
“杀手级应用”似乎是分布式团队:而不是绑定到中央服务器(通过缓慢或不可靠的连接),每个团队都可以拥有自己的存储库并根据需要推送更改
答案 6 :(得分:0)
与他人共享更改而不发布
对我而言,当我是一个大型团队时,杀手级应用程序能够与其他工程师一起工作,共享更改,而无需通过中央服务器。这意味着我们可以以受控的方式共享未完成的功能(即没有“从我的树中复制此文件”),这一切都正常工作。