Bitbucket nie robi podrepos in situ. W rezultacie, Mercurial próbuje przesłać każdy z twoich repozytoriów w to samo miejsce i narzeka, kiedy próbujesz wcisnąć SubFolder2 repo do zdalnej kopii repozytorium SubFolder1.
Podstrefy są rzekomo bibliotekami, które są współdzielone między wieloma projektami, a zatem nie podlegają jednemu głównemu repo, ale zamiast tego znajdują się w ich własnej przestrzeni. Dlatego należy utworzyć osobne zdalne repozytoria, aby pomieścić każde podskładniki (bibliotekę) i odwoływać się do oddzielnej ścieżki zdalnej w pliku .hgsub.
Na przykład, przykład projekt może mieć trzy bitbucket hostowane repozytoria
https://bitbucket.org/bitbucketname/main_project
https://bitbucket.org/bitbucketname/library1
https://bitbucket.org/bitbucketname/library2
Chcesz filespace lokalnego klona wyglądać tak:
/MainFolder/
/MainFolder/SubFolder1
/MainFolder/SubFolder2
w lokalnym klon main_project (Folder główny), ustaw domyślną ścieżkę macierzystego repozytorium na https://bitbucket.org/bitbucketname/main_project
tj. /MainFolder/.hg/hgrc
zawiera
[paths]
default = https://bitbucket.org/bitbucketname/main_project
Teraz wskaż ścieżki zdalne podskładników/bibliotek w pliku .hgsub. Ogólny format pliku.wpisy hgsub jest:
local/path/to/subrepo = remote/path/to/matching/library
Więc .hgsub może zawierać lokalnych i zdalnych względnych ścieżek (w stosunku do lokalizacji głównego repo lokalnie lub zdalnie, w zależności od przypadku może być):
SubFolder1 = ../library1
SubFolder2 = ../library2
lub względne lokalne ścieżki z bezwzględnych ścieżek dostępu do zdalnego repo każdej biblioteki w:
SubFolder1 = https://bitbucket.org/bitbucketname/library1
SubFolder2 = https://bitbucket.org/bitbucketname/library2
lub bezwzględne ścieżki do wszystkiego:
/MainFolder/SubFolder1 = https://bitbucket.org/bitbucketname/library1
/MainFolder/SubFolder2 = https://bitbucket.org/bitbucketname/library2
Teraz, kiedy wypychasz z lokalnego głównego projektu, Mercurial wie dokładnie, gdzie znaleźć wszystkie podskładniki (lokalnie) i gdzie przesłać zmiany wprowadzone do każdej biblioteki (zdalnie).
Dodatkowo, powiedzmy, że chcesz dodać do projektu inną bibliotekę. Wtedy twój .hgsub może wyglądać tak:
SubFolder1 = ../library1
SubFolder2 = ../library2
another_library = https://bitbucket.org/honkaboy/honkaboys_excellent_library
Próbowałem też za pomocą [podścieżki] jak pokazano na przykład dla subrepository na [LINK] (https://bitbucket.org/kiilerix/subrepodemo/). Dodałem następujący po końcu mojego pliku .hgsub: (https: // (?: [^ @] + @)? Bitbucket \ .org/[^ /] +/[^ /] +)/(. *) = \ 1- \ 2 To nie działało, ponieważ repozytorium nie istnieje dla zastępowanego interfejsu użytkownika. Czy jest jakiś inny sposób na zrobienie tego bez zmiany nazw wszystkich moich repozytoriów, aby pasowały do wyrażenia regularnego. Również dlatego, że jest to prywatne repozytorium, bitbucket dodaje nazwę użytkownika do sformatowanego linku i kończy się niepowodzeniem dla innych użytkowników. – samirjaiswal