Mercurial存储库与许多活跃的开发人员?

我正在通过Bitbucket,并且我似乎无法找到任何看起来像我怀疑我们的存储库看起来像的Mercurial存储库,只要我们切换到Mercurial。

因此,我想知道,有没有我们在这里不考虑的工作流程?

我说的是我做了一个小型的自动化测试。 我们有14人在同一个项目上工作,分成4个Scrum团队。 为了模拟代码中使用Mercurial DVCS的14位(我挑选了10位数字)并行工作的人员,推送到同一个中央主存储库,我编写了一个脚本。

  • 我创建了一个新的“主”存储库,然后为10个虚拟人克隆了它
  • 然后我运行了1000次迭代循环,选取一个随机克隆,并执行以下操作之一:
  • 10%的时间,从主人拉,合并,提交合并,推
  • 90%的时间,做一个本地的变化和承诺
  • 请注意,我确保通过简单地让每个虚拟人员在他自己的文件上工作,永不会发生合并冲突。

    这可以在拉动,合并和推动(避免主回购中的2+头)之前模拟人们在本地工作的1+次提交。 这可能是因为这个工作流程是错误的。

    这是存储库现在的样子的示例(截图+回购链接):

    来自TortoiseHg的样本截图

    该存储库可以在这里找到:http://hg.vkarlsen.no/hgweb.cgi/parallel_test/graph。

    这看起来非常混乱,正如我所说的,我似乎无法找到具有类似历史的任何存储库。 通过“杂乱”,我的意思是看起来像项目的较早的历史将几乎总是有10个并行分支。 靠近顶部,当然会逐渐减少,但随着当前在本地存储库中工作的人推送到主服务器,它将会扩大。

    所以我有两个问题:

  • 任何人都可以看到一个类似历史的存储库吗? 因为我似乎找不到任何东西,我开始怀疑我可以从中得出什么样的结论......
  • 我们的工作流程是否有问题(即我在此处列出的工作流程)? 我们是否应该重新组织/挤压/移植,将责任推给一个人,而不是在这里完成其他事情?

  • 印象深刻的准备!

  • 如果你稍微回头看看所有旧的提交,它总是看起来很乱。 它总是逐渐减少,甚至看到一些古老的历史。 例如,请参阅http://hg.intevation.org/mercurial/crew/graph/12402?revcount=120。 这不是最近的提交,而是显示所有历史记录。

  • Rebase有相当大的帮助,特别是如果有人在不同的地方工作。 (我通常会检查传入的提交以查看是否存在潜在的文件或功能冲突,如果不存在,我确实会发生变更。)

  • 虽然Rebase并不是傻瓜,所以合并是首选的“安全”行为,但是它在历史中留下了更多的“垃圾”。 折衷。

    Rebase有点类似于bog标准的SVN更新。 现有的东西是基线和你的变化在顶部,交叉你的手指仍然有效。 这很有用,但有些时候你觉得更安全,把你的,他们和合并作为历史上的单独提交。

    也有提交压缩(option-squashing)选项(可能是histedit扩展),它将所有中间提交的内容压缩为一个。 当您即将推送并希望将您自己的回购中的许多部分提交作为单个提交到主要部分时,这非常有用。


    我有12位开发人员在同一个Mercurial仓库工作,我们的历史看起来不像那样。 偶尔有合并提交,但大多数合并来自合并实际分支,也就是说,我们的主要开发分支中可能会有一个合并,从生产/发布分支​​上的修正发布中引入更改。

    这非常容易实现,开发人员对他们的本地存储库进行攻击并承诺,并且他们有足够稳定的时间来与他们推动的其他团队分享内容。

    如果自从他们开始承诺推送没有发生任何问题,那么就没有发生过任何事情。

    如果其他人发生了变化,Mercurial就会抱怨说这种推动会产生远程负责人。 开发人员然后执行hg pull --rebase试推送。 推动过程中,每个人都很高兴。

    如果您使用持续集成与开发人员定期推送到共享存储库,这是要走的路。 知道你是否推动了更改很容易,并且避免了大量无用的合并提交,使你的历史更加混乱。

    链接地址: http://www.djcxy.com/p/37629.html

    上一篇: Mercurial repositories with many active developers?

    下一篇: Fetching a single file from another mercurial repository