我正在经历Bitbucket,如果我们切换到Mercurial ,我似乎无法找到任何看起来像我怀疑我们的存储库看起来像的Mercurial存储库.
因此,我想知道,有没有我们在这里考虑的工作流程?
我正在谈论的是我做了一个小的自动化测试.我们有14个人在同一个项目上工作,分成4个scrum团队.为了模拟14个(我选择了10个,整数)人们在代码上并行工作,使用Mercurial DVCS,推送到同一个中央主存储库,我写了一个脚本.
请注意,我通过简单地让每个虚拟人员在他自己的文件上工作来确保永远不会发生合并冲突.
这将模拟在拉动,合并和推动之前进行1次提交的本地工作人员(避免在主回购中使用2个以上的头部).可能是这个工作流程是错误的.
这是存储库现在的样子(截图+链接到repo):

可在此处找到存储库:http://hg.vkarlsen.no/hgweb.cgi/parallel_test/graph.
这看起来非常混乱,正如我所说,我似乎无法找到任何具有相似历史的存储库.通过"凌乱",我的意思是看起来项目的旧历史几乎总是有10个并行分支.接近顶部,它当然逐渐减少,但随着当前在本地存储库中工作的人推送到主服务器,它将会扩展.
所以我有两个问题:
令人印象深刻的准
如果你回过头来同时查看所有旧的提交,它总是看起来很乱.它总是逐渐变细,甚至看着一点点古老的历史.例如,请参见http://hg.intevation.org/mercurial/crew/graph/12402?revcount=120.这不是最近的提交,但显示了该提交的所有历史记录.
Rebase帮助很大,特别是如果人们在不同的区域工作.(我通常检查传入的提交以查看是否存在潜在的文件或功能冲突,如果没有,我会进行rebase.)
Rebase虽然不是万无一失,所以merge是首选的"安全"操作,但它在历史上留下了更多的"垃圾".权衡.
Rebase有点像沼泽标准SVN更新.现有的东西是基线,你的变化是最重要的,交叉你的手指它仍然有效.它很有用,但有时候你觉得把你的,他们的和合并作为历史上的单独提交更安全.
还有提交压缩作为选项(可能是hetedit扩展),它将所有中间提交压缩为一个.当您即将推送并希望将自己的repo中的许多部分提交作为单个提交传递给main时,这非常有用.
我有12个开发人员在工作的同一个Mercurial存储库中工作,我们的历史看起来不像那样.偶尔会有合并提交,但大多数合并来自合并实际分支,即我们的主要开发分支中可能会合并,从生产/发布分支上的错误修复版本中引入更改.
这很容易实现,开发人员破解并提交到他们的本地存储库,当他们有足够稳定的东西与他们推动的其他团队共享时.
如果没有任何事情已经提交,因为他们开始提交推动经历没有问题.
如果其他人提交了更改,Mercurial会抱怨推送将创建远程头.然后开发人员执行hg pull --rebase并重试推送.推动经历,每个人都很高兴.
如果您正在使用与开发人员定期推送到共享存储库的持续集成,那么这是可行的方法.知道你是否推动了更改很容易,你可以避免许多无用的合并提交使你的历史变得混乱.