Bitbucket不在原位進行subrepos。因此,Mercurial試圖將您的每個存儲庫推送到同一位置,並在嘗試將repo SubFolder2推送到SubFolder1回購的遠程副本時發出抱怨。
子庫是表面上是多個項目之間共享的庫,因此不生活在任何一個主要回購站下,而是在他們自己的空間中。因此,您必須創建單獨的遠程存儲庫來存放每個子庫(庫),並在.hgsub文件中引用單獨的遠程路徑。
例如,您的示例項目可能有三個到位桶託管庫
https://bitbucket.org/bitbucketname/main_project
https://bitbucket.org/bitbucketname/library1
https://bitbucket.org/bitbucketname/library2
您希望您的本地克隆的文件空間看起來像這樣:
/MainFolder/
/MainFolder/SubFolder1
/MainFolder/SubFolder2
在main_project的本地克隆(MainFolder ),設置父庫的默認路徑https://bitbucket.org/bitbucketname/main_project
即/MainFolder/.hg/hgrc
包含
[paths]
default = https://bitbucket.org/bitbucketname/main_project
現在,在.hgsub文件中指出子庫/庫的遠程路徑。一般的格式。hgsub條目是:
local/path/to/subrepo = remote/path/to/matching/library
所以你.hgsub可能包含相對本地和遠程路徑(相對於主回購的位置在本地或遠程,視情況而定):
SubFolder1 = ../library1
SubFolder2 = ../library2
或
SubFolder1 = https://bitbucket.org/bitbucketname/library1
SubFolder2 = https://bitbucket.org/bitbucketname/library2
或絕對路徑的一切:
使用絕對路徑,以每個圖書館的遠程回購相對本地路徑
/MainFolder/SubFolder1 = https://bitbucket.org/bitbucketname/library1
/MainFolder/SubFolder2 = https://bitbucket.org/bitbucketname/library2
現在,當您從本地主項目中推送時,Mercurial知道到哪裏可以找到所有子庫(本地)以及將每個庫所做的更改推送到何處(遠程)。
另外,假設您想將其他人的庫添加到您的項目中。然後你.hgsub可能是這個樣子:
SubFolder1 = ../library1
SubFolder2 = ../library2
another_library = https://bitbucket.org/honkaboy/honkaboys_excellent_library
我也嘗試使用[子路徑]截至[鏈接]所示例子爲subrepository在(https://bitbucket.org/kiilerix/subrepodemo/)。我在.hgsub文件末尾添加了以下內容: (https://(?:[^ @] + @)?bitbucket \ .org/[^ /] +/[^ /] +)/(。* )= \ 1- \ 2 由於替換的用戶界面不存在存儲庫,因此這不起作用。有沒有其他方法可以做到這一點,而無需重新命名我的所有存儲庫以匹配正則表達式。 此外,由於這是私人存儲庫bitbucket將用戶名添加到格式化的鏈接,並且其他用戶失敗。 – samirjaiswal