TortoiseHG,fork with subrepos - force commit& push .hgsubstate only

时间:2017-05-14 13:10:19

标签: mercurial mercurial-subrepos

mercurial(不是我的)有公开回购。它包含两个子目录。我为两个主要的repo nad和subrepos做了一个分叉。我想不时创建拉取请求,但我无法使子版本正常工作。 当我克隆我的分叉回购时,它将被下载,但是两个子版本将保持原始状态,而不是我的分叉。如果我用forked替换它们,我将无法进行拉取请求,因为我不想将原始repo切换到我的subrepos。但我想改变repo和subrepo。 一旦我找到了解决方案。我修改了子目录的.hg文件夹中的hgrc文件。

It was:
[paths]
default = ssh://hg@bitbucket.org/originator/subrepo

成为:

[paths]
Me = ssh://hg@bitbucket.org/Me/subrepo
Original = ssh://hg@bitbucket.org/originator/subrepo

它完全正常工作。我已经改变了代码,推到了我的subrepo,创建了subrepo的pull请求。然后我推动了我的主回购中的变化,它只是起作用。 .hgsubstate现在正在reffering提交存在于forked repo上,但不是原始的。当orignator将两个拉取请求时,一切都会起作用。

我说过,它之前有效,但不是现在。出于一些奇怪的原因,我不能只推动.hgsubstate指向分叉子参数上存在的新子报表修订。我根本无法将其包含在提交中。我点击“提交”,但在结果提交中它不包括在内。而且我不知道如何强行包括在内 - HG太“聪明”了。 TortoiseHG也将我的subrepo标记为脏。但是,如果我试图添加.hgsubstate和我的脏回购,它出于某种原因试图将更改推送到创始人的回购。似乎我的HG无法提交.hgsubstate而不将更改推送到subrepo本身。 有办法解决这个问题吗?我想要的一切就是提交并推送.hgsubstate而不做任何其他事情。

1 个答案:

答案 0 :(得分:0)

您是否相应地调整了.hgsub,以便它既适用于您的本地路径,也适用于您推送到服务器的远程路径?

建议添加到绝对意义上描述路径的.hgsub部分。当我将subrepos作为服务器上的dir结构中的相同级别但我希望它们在我自己的计算机上作为子目录时,我曾经很难解决这个问题。它帮助我向.hgsub添加了一个子路径部分:

[subpaths]
ssh://user@host.org/path/subrepo1 = ssh://user@host.org/subrepo1
ssh://user@host.org/path/subrepo2 = ssh://user@host.org/subrepo2

/home/user/project/subrepo1 = /home/user/subrepo1
/home/user/project/subrepo2 = /home/user/subrepo2

project/subrepo1 = subrepo1
project/subrepo2 = subrepo2