我正在寻找一种简单的方法来在重新定位或之后引入额外的提交,这是告诉别人不要反驳的好理由。
基本上我们有一个项目crons
。我经常对此进行更改,当我请求时,项目的维护者会进行更改并每次重新。
这通常没问题,但它可能会在两种情况下导致问题:
例如,我提交了修订版1000
。维护人员提取和修改以创建修订版1000'
,但几乎在同一时间我意识到一个可怕的错误并创建修订1001
(1000
的孩子)。由于目标分支中不存在1000
,因此会创建一个无法使用的合并,维护者通常会嘲笑我并告诉我再试一次(这需要我在{{1)重新检查主分支从另一个结帐手动创建和导入补丁)。我相信你可以看到同样的问题,我试图同时从两个独立的分支发布同样的问题。
无论如何,一旦主分支有1000'
,是否可以执行任何操作来引入1000'
而无需再次合并相同的更改?还是反驳毁了这个?无论有什么我可以说让Maintainer停止变基?他使用不正确吗?
答案 0 :(得分:4)
告诉你的维护者不要再做个杰克了。
重新定位只能由您完成,即创建您想要变更的变更集,以及不完成更改集:
您的维护者可能想要一个非分布式版本控制系统,例如Subversion,其中更改集遵循直线,而不是DVCS的分支特性。在这方面,Mercurial的选择是错误的,或Mercurial的使用是错误的。
另请注意,重新定位是更改历史记录的一种方式,并且由于Mercurial不鼓励(更改历史记录),因此只能将扩展作为扩展程序使用,而不是“开箱即用”的扩展程序Mercurial配置。
所以回答你的问题:不,因为你的维护者坚持打破DVCS的性质,这些工具会对你(和他)进行打击,你将很难获得与之合作的工具。你。
告诉维护人员接受DVCS的真正工作方式。现在,他可能仍然坚持不接受他的存储库中的新分支或头部,并且在将单个头部推回到他的存储库之前坚持要求拉动和合并,但这没关系。
重新分配共享更改集不是。
如果你真的想使用变基,正确的方法就是这样:
最终结果是目标存储库和您自己的存储库将具有更多线性变更集历史记录,而不是分支,然后是合并。
但是,由于DVCS中的多个分支完全正常,因此不必完成所有这些。你可以合并,继续工作。这就是DVCS应该如何工作的方式。如果您真的想,重新绑定只是一个额外的工具,您可以使用。