抱歉,问题涉及很多部分,但我很难理解将Mercurial补丁队列与BitBucket一起使用的预期方法,而Google并没有太大帮助。我希望一个描述某些MQ概念的答案可以一次涵盖许多问题。我已经读过http://ches.nausicaamedia.com/articles/technogeekery/using-mercurial-queues-and-bitbucket-org,但是它似乎已经过时且不完整。我的总体计划是允许大量用户提交大量更改,而不必将其提交给分支机构。这些补丁代表玩家对游戏进行的可选修改,以增强和扩展游戏。我希望用户能够挑选任意一个补丁或一组补丁来玩和查看。当我对hg的工作原理有了深刻的了解后,我打算编写一些PHP脚本或一些东西来将分支以及选定的补丁集拉入一个工作区中,以便播放器能够运行HTML5代码以供查看。
我已经能够:
在SourceForge http://sourceforge.net/p/iotabuildit/wiki/Home上创建一个存储库,我最初以为我将托管所有内容。
将我所有的代码提交到SourceForge存储库。
请意识到,根据我的要求,BitBucket可能是一个更好的托管此设备的地方(感谢Recommended DVCS mechanism for hosting many independent patches)。
将我的代码直接从SourceForge的Mercurial存储库导入BitBucket http://bitbucket.org/bluemonkmn/iotabuildit/
将BitBucket URI添加到TortoiseHg,这样我就可以将同一本地存储库与任一在线存储库一起使用。
在TortoiseHg中启用mq
Q对本地存储库的修补程序队列进行更改。
在BitBucket http://bitbucket.org/bluemonkmn/iotabuilditmq/上创建补丁队列存储库。
将补丁队列存储库克隆到本地存储库
将补丁文件从原始本地存储库复制到补丁队列存储库中(尽管我想知道是否有更好的方法来执行此操作)。
在执行推送之前,通过打开--mq开关将补丁推送到BitBucket补丁队列存储库。
请参阅BitBucket中列出的补丁。
克隆BitBucket补丁队列存储库的新副本,并查看本地存储库中可用的补丁(以及树的其余部分)。
我不知道或有疑问的事情是:
我是否需要在本地保留主存储库和补丁存储库?
我可以/应该将补丁库与SourceForge一起使用吗? (如果可以的话,我可以放弃BitBucket。)
SourceForge是否支持mq? (SourceForge是否会像我在BitBucket上看到的那样给我一个克隆的存储库,其中包含补丁?)
我可以/应该将原始存储库与BitBucket补丁存储库一起使用吗? (如果可以,我可以放弃SourceForge上的存储库。)
在处理用于补丁的代码时需要使用一个存储库,而在处理要正式提交的代码时需要使用另一个存储库吗?
将补丁推入在线存储库的最佳方法是什么?
我是否要在本地修补程序存储库上执行QCommit或QNew,然后使用--mq开关进行Push?
在我的过程中的某个时候,我向补丁存储库提交了一个系列和一个.diff文件,这似乎有些不合时宜。这是否使我对mq和BitBucket应该如何工作的看法感到困惑?
我应该将.diff文件提交到BitBucket或SourceForge上的源代码管理吗? (在某些情况下,QCommit似乎要提交.hgignore,series和.diff文件)
克隆后,用户是否应该能够在补丁程序存储库中查看挂起的已应用和/或未应用的补丁?
有没有办法在不克隆本地或远程存储库的情况下提取可用补丁?
一旦删除了本地存储库中的补丁程序,便无法在不重新克隆的情况下弄清楚如何从远程存储库取回该补丁程序,也无法弄清楚如何提交该补丁程序的删除。
如果不手动复制补丁文件,就无法将补丁从我的原始存储库转移到补丁存储库中。
我是否很快就会遇到一个问题,即如果在同一队列中没有其他补丁之前,我将无法从队列中挑选出一些补丁?我担心某些玩家会忽略将补丁制作在单独的分支/队列/任何地方,这会使它们与来自同一(或什至另一个)用户的不相关更改保持一致。在处理该潜在问题方面的任何建议也将受到赞赏。
是否可以(允许)任意用户提交补丁,而不必显式添加每个BitBucket用户以拥有对补丁存储库的权限?
所有(可能数百个)用户共享补丁队列存储库是否明智且合理?这将是理想的选择(而不是让每个用户创建自己的补丁程序存储库,如果可能的话),因为我不想让用户感到麻烦,并且鉴于我花了很多时间来理解Mercurial和BitBucket,我担心任何并发症都会关闭许多用户/播放器。
如您所知,我有点迷茫,不知道要问什么问题。我怀疑答案比这些问题要简单,但是如果不知道这个问题,就很难提出正确的问题。希望一个描述补丁队列存储库性质的答案能够为我解决所有这些问题。
最佳答案
回顾过去的问题,我认为我对CVCS的了解太模糊了我对DVCS的理解。最后,我只是简单地允许其他SourceForge用户托管自己的存储库克隆并发布指向其存储库的链接(请参见http://sourceforge.net/p/iotabuildit/wiki/reviews/)。
关于mercurial - 对许多用户和补丁使用BitBucket上的Mercurial补丁队列存储库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10164664/