2017-05-14 63 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。 –