在使用到位桶水银补丁队列库为许多用户和补丁(Using Mercurial patch queue

2019-06-23 15:49发布

很抱歉的许多部分的问题,但我有困难的时候理解意法使用水银补丁排队到位桶,而谷歌是没有帮助很大。 我的希望是一个答案描述一些MQ概念将涵盖很多的问题一次。 我已阅读http://ches.nausicaamedia.com/articles/technogeekery/using-mercurial-queues-and-bitbucket-org ,但它似乎是过时的和不完整的。 我的总体规划是允许从用户的众多提交的变化众多,而不必将它们提交到一个分支。 这些补丁代表可选修改玩家正在为游戏加强和扩大游戏。 我希望用户能够樱桃挑选任意补丁或补丁集与和审查玩的。 当我得到的汞是如何工作的一个坚实的理解,我打算写一些PHP脚本或东西拉一个分支加上选定的一组补丁到工作区的玩家能够运行HTML5代码审查。

已经能够:

  1. 建立在SourceForge上的存储库http://sourceforge.net/p/iotabuildit/wiki/Home ,在那里我本来以为我会被主办的一切。
  2. 提交我的所有代码SourceForge的存储库。
  3. 要知道,到位桶可能是一个更好的地方来举办这个(感谢推荐DVCS机制举办许多独立的补丁给我的要求)。
  4. 导入我直接从SourceForge的Mercurial库代码放入到位桶http://bitbucket.org/bluemonkmn/iotabuildit/
  5. 添加到位桶URI来TortoiseHg这样我就可以使用同一个本地仓库与在网上资料库。
  6. 启用TortoiseHg MQ
  7. QCommit改变成我的本地库的补丁队列。
  8. 创建到位桶补丁队列库http://bitbucket.org/bluemonkmn/iotabuilditmq/ 。
  9. 克隆补丁队列存储库到本地存储库
  10. 从原来的本地存储库中的补丁文件复制到补丁队列库(虽然我不知道是否有更好的方法来做到这一点)。
  11. 通过做推前打开--mq开关推补丁到位桶补丁队列存储库。
  12. 见到位桶中列出的修补。
  13. 克隆到位桶补丁队列存储库的全新副本,看到本地资源库中可用的补丁(连同树的其余部分)。

想不通 ,或对问题的事情是:

  1. 我是否需要保留两个主存储库和本地补丁库?
    • 可以/我应该使用SourceForge上的修补程序存储库? (如果可以,我可能会放弃到位桶)。
    • SourceForge上是否支持MQ? (SourceForge上会不断给我一份有补丁坐在它像我的到位桶看见克隆库?)
    • 可以/我应该使用到位桶补丁库的原始资料库? (如果可以,我可能会放弃在SourceForge上的存储库。)
    • 我是否需要使用一个存储库上的代码用于补丁和工作时,其他的代码预期工作,则必须正式承诺?
  2. 什么是补丁推入一个网上信息库的最佳方式?
    • 难道我做了局部小片库中的QCommit或QNEW,然后用--mq开关推?
    • 在期间我的过程中的一些观点,我犯了一系列和为.diff文件的补丁库,这似乎有点偏离。 这已玷污了我的MQ和到位桶是如何工作的看法?
    • 我应该永远是犯为.diff上到位桶或SourceForge的文件到源代码控制? (在某些情况下,QCommit似乎想提交.hgignore,系列,并为.diff文件)
    • 是用户应该能够看到挂起的应用和/或不适用的修补程序存储库补丁克隆之后?
  3. 有什么办法来拉在本地远程仓库中的补丁不克隆呢?
    • 有一次,我删除了我的本地库补丁,我无法弄清楚如何获得它从远程仓库后面,而无需重新克隆的,也不是我能想出如何提交删除补丁。
    • 我无法补丁从我原来的仓库转移到修补程序存储库,而无需手动复制补丁文件。
  4. 我是不是很快就要碰到我将不能够挑选出从队列一些补丁没有得到其他的补丁在它前面的在同一个队列哪里出了问题? 我很担心,有些玩家会忽略使在一个单独的分支/队列/无论将它们放在行与来自相同(或者甚至其他)用户不相关的更改他们的补丁。 在处理潜在问题的任何建议都也表示赞赏。
  5. 是否有可能(允许)的任意用户提交一个补丁,而无需显式地添加每个用户到位桶有对修补程序存储库的权限?
  6. 它是明智的,合理的将所有(潜在的数百个?)的用户共享补丁队列库? 这将是理想的(而不是每个用户创建他们自己的补丁库,如果这甚至有可能),因为我不希望这种情况是复杂的用户,并给予我已理解水银和到位桶的时间量做的,我惧怕任何并发症会关闭大量的用户/玩家。

正如你或许可以告诉,我有点失去了,不知道该问什么问题。 我怀疑,答案是比这些问题更简单,但不知道这个问题,很难提出正确的问题。 希望有答案描述补丁队列库的性质将清除所有这一切为我说话。

Answer 1:

回顾我的老问题,我想我的DVCS的理解太由我熟悉CVCS模糊。 最后我简单地允许其他用户的SourceForge主持我的仓库自己的克隆,发布到自己的资料库链接(见http://sourceforge.net/p/iotabuildit/wiki/reviews/ )。



Answer 2:

我想我找到了答案,对问题#3第二弹:

  1. 确保补丁是在源(本地)仓库应用的队列。
  2. 现在,我可以从TortoiseHg工作台“导出”上下文菜单中选择“复制补丁”。
  3. 然后,我可以切换到其他的本地资源库,并从“库”菜单中选择“导入”。
  4. 点击“导入从剪贴板”
  5. 在该补丁可以应用,选择“补丁”目标的下拉列表。
  6. 单击导入

现在从其他本地资源库贴片出现(施加未)在本地储存库,并且可以很容易地应用。

除非我找到答案,我的所有其他的问题我自己,我很可能不会接受这个(我自己)的答案。 我希望有人能帮助我的其他问题。



Answer 3:

我很害怕,和你一起去的“很不理想”路径“非托管乱”里程碑克隆的SF堆

  • 冯·可以使用MQ队列与到位桶(见水银-船员MQ回购或hgsubversion布局-黑客回购)没有额外的回购,只与内部DIR .hg补丁
  • 我看不到任何理由来存储自己的回购补丁(变更几乎是不可读的 - diff文件的diff文件,补丁的历史有近零值)
  • 随着一个回购补丁,你可以提供补丁的容易交换和更新
  • qclone | push --mq qclone | push --mq提供的香草代码顶级补丁的双向交换
  • 集团的工作和周围的一些补丁贡献者P2P通信可以提供MQCollab扩展


文章来源: Using Mercurial patch queue repository on BitBucket for many users and patches