Mercurial 回购后再基准的拉动提交

Mercurial 回购后再基准的拉动提交,mercurial,rebase,Mercurial,Rebase,我正在寻找一种简单的方法,在重定基址后加入额外的提交,或者一个告诉某人不要重定基址的好理由 基本上我们有一个项目,crons。我经常对此进行更改,项目的维护人员会在我请求时进行更改,并在每次更改时进行重新调整 这通常是可以的,但在两种情况下可能会导致问题: 同时从两个分支释放 之后必须释放一个额外的提交。 例如,我提交了修订版1000。维护人员拉了拉并重新调整了基线以创建修订版1000',但几乎同时我意识到一个可怕的错误,并创建了修订版1001 1000的子版本。由于目标分支中不存在1000,这

我正在寻找一种简单的方法,在重定基址后加入额外的提交,或者一个告诉某人不要重定基址的好理由

基本上我们有一个项目,crons。我经常对此进行更改,项目的维护人员会在我请求时进行更改,并在每次更改时进行重新调整

这通常是可以的,但在两种情况下可能会导致问题:

同时从两个分支释放 之后必须释放一个额外的提交。 例如,我提交了修订版1000。维护人员拉了拉并重新调整了基线以创建修订版1000',但几乎同时我意识到一个可怕的错误,并创建了修订版1001 1000的子版本。由于目标分支中不存在1000,这会创建一个不可用的合并,维护人员通常会嘲笑我并告诉我再试一次,这需要我在1000'处重新签出主分支,并从另一个签出处手动创建和导入补丁。我相信您可以看到,如果我同时尝试从两个独立的分支中释放,同样的问题会发生


不管怎样,一旦主分支有了1000',是否可以做些什么来拉入1001,而不必再次合并相同的更改?还是重新定基会毁掉这一切?不管怎样,我能说些什么让维护人员停止重定基址吗?他用错了吗?

告诉您的维护人员不要再做jacka**

重定基址只能由您自己完成,即创建要重定基址的变更集的变更集,而不能对以下变更集进行重定基址:

已与其他人共享 从别人那里得到的 您的维护人员可能想要一个非分布式版本控制系统,如Subversion,其中变更集遵循直线,而不是DVCS的分支性质。在这方面,选择Mercurial是错误的,或者使用Mercurial是错误的

还请注意,重定基址是更改历史记录的一种方式,由于Mercurial不鼓励更改历史记录,因此重定基址仅作为扩展提供,而不是作为普通Mercurial配置的现成配置提供

所以要回答您的问题:不,因为您的维护人员坚持要打破DVCS的本质,所以这些工具将与您和他发生冲突,您将很难让这些工具与您合作

告诉您的维护人员接受DVCS的实际工作方式。现在,他可能仍然坚持不接受他的存储库中的新分支或头,并坚持在将单个头推回到他的存储库之前进行拉合并,但这没关系

然而,对共享变更集进行重定基址并非易事

如果确实要使用重定基址,正确的方法如下:

您可以从某个源存储库中获取最新的更改 您在本地提交了很多变更集,修复了bug,添加了新功能等等 然后尝试推送,被告知这将在目标存储库中创建新的磁头。这告诉您,目标存储库中有一些新的变更集,您上次提取时没有得到,因为它们是在这之后添加的 相反,你拉,这将添加一个新的头在您的本地存储库。现在,您拥有了从新变更集创建的头,以及从其他人创建的源存储库检索的头。 然后,在从源存储库获得的变更集的基础上重新设置变更集的基础,实质上是在历史记录中移动变更集,以显示您是从当前源存储库中的最新变更集开始工作的 然后你尝试一次新的推送,成功了 最终的结果是,目标存储库和您自己的存储库将有一个更线性的变更集历史,而不是一个分支,然后是一个合并


然而,由于在DVCS中有多个分支是非常好的,所以您不必经历所有这些。您可以合并,然后继续工作。这就是DVCS的工作原理。重新定基只是一个额外的工具,如果你真的想使用的话,你可以使用。

告诉你的维护人员不要再做jacka**

重定基址只能由您自己完成,即创建要重定基址的变更集的变更集,而不能对以下变更集进行重定基址:

已与其他人共享 从别人那里得到的 您的维护人员可能想要一个非分布式版本控制系统,如Subversion,其中变更集遵循直线,而不是DVCS的分支性质。在这方面,选择Mercurial是错误的,或者使用Mercurial是错误的

还请注意,重定基址是更改历史记录的一种方式,由于Mercurial不鼓励更改历史记录,因此重定基址仅作为扩展提供,而不是作为普通Mercurial配置的现成配置提供

所以要回答你的问题:不,因为你的维护者坚持打破DVCS的本质,这些工具将与你和他对抗,你将很难进入 g提供与您合作的工具

告诉您的维护人员接受DVCS的实际工作方式。现在,他可能仍然坚持不接受他的存储库中的新分支或头,并坚持在将单个头推回到他的存储库之前进行拉合并,但这没关系

然而,对共享变更集进行重定基址并非易事

如果确实要使用重定基址,正确的方法如下:

您可以从某个源存储库中获取最新的更改 您在本地提交了很多变更集,修复了bug,添加了新功能等等 然后尝试推送,被告知这将在目标存储库中创建新的磁头。这告诉您,目标存储库中有一些新的变更集,您上次提取时没有得到,因为它们是在这之后添加的 相反,你拉,这将添加一个新的头在您的本地存储库。现在,您拥有了从新变更集创建的头,以及从其他人创建的源存储库检索的头。 然后,在从源存储库获得的变更集的基础上重新设置变更集的基础,实质上是在历史记录中移动变更集,以显示您是从当前源存储库中的最新变更集开始工作的 然后你尝试一次新的推送,成功了 最终的结果是,目标存储库和您自己的存储库将有一个更线性的变更集历史,而不是一个分支,然后是一个合并


然而,由于在DVCS中有多个分支是非常好的,所以您不必经历所有这些。您可以合并,然后继续工作。这就是DVCS的工作原理。如果你真的愿意,重新定基只是一个额外的工具。

我个人不明白你为什么要重新定基。。你只是在破坏历史,而VCS的全部目的就是让你了解历史。我不明白你为什么要重新设定基址。。你只是在破坏历史,风投的全部目的就是让你看到历史