2017-05-14 60 views
2

有公共回购mercurial(不是我的)。它包含两个subrepos。我已经为主repo和两个subrepos做了一个分支。我想不时创建pull请求,但我无法使subrepos正常工作。 当我克隆我的分叉回购,它将被下载,但两个subrepos将保持原来的,不是我的分叉。如果我将它们替换为分叉,我将无法提出请求,因为我不想将原始仓库切换到我的子仓库。但是我想改变回购和subrepo。 一旦我找到了解决方案。我修改了subrepo的.hg文件夹中的hgrc文件。TortoiseHG,叉与subrepos - 强制提交和推.hgsubstate只有

It was: 
[paths] 
default = ssh://[email protected]/originator/subrepo 

它变成:

[paths] 
Me = ssh://[email protected]/Me/subrepo 
Original = ssh://[email protected]/originator/subrepo 

这是工作,正是因为它应该。我更改了代码,推送到我的subrepo,为subrepo创建了请求。然后,我推动了我的主要回购协议中的更改,并且它很简单。 .hgsubstate现在正在尝试在分叉的repo上存在,但不是原始的。当orignator将megre都拉请求,一切都会工作。

我说过,它以前有效,但不是现在。出于某种奇怪的原因,我不能只推送指向分叉子文件夹中存在的新子版本修订的.hgsubstate。我根本无法将它包含在提交中。我点击“提交”,但在结果提交它不包括在内。我不知道如何强制包括 - HG太“聪明”了。另外TortoiseHG将我的subrepo标记为脏。但是,如果我尝试添加.hgsubstate和我的脏回购,它出于某种原因试图将更改推送到发件人的回购。看起来像我的HG不能提交.hgsubstate而不会将更改推送到subrepo本身。 有什么办法解决这个问题?我想要的一切就是提交并推送.hgsubstate而不做其他任何事情。

回答

0

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

建议您添加到描述绝对意义上路径的.hgsub部分。当我将subrepos作为服务器目录结构中的同一级别,但希望将它们作为我自己的计算机上的子目录时,我曾经与此争执过。它帮助我添加到.hgsub的子路径部分:

[subpaths] 
ssh://[email protected]/path/subrepo1 = ssh://[email protected]/subrepo1 
ssh://[email protected]/path/subrepo2 = ssh://[email protected]/subrepo2 

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

project/subrepo1 = subrepo1 
project/subrepo2 = subrepo2 
+0

这将帮助我使用我的回购,但它不是一个现实问题。问题是,如果我修改.hgsub,修改后的版本将在拉取请求中提供。这是一个问题 - 我不能只修改.hgsub。 –