Walczę o to, jak poprawnie śledzić repozytoria zagnieżdżone za pomocą TortoiseHg.Jaki jest poprawny sposób obsługi zagnieżdżonych repozytoriów Hg za pomocą Mercurial/TortoiseHg?
Mam główne repozytorium, które śledzi mój cały projekt. Ten projekt zawiera kilka małych wtyczek, które są przechowywane w podkatalogu plugins /.
Chciałbym śledzić każdą wtyczkę niezależnie (zobowiązując się i naciskając na BitBucket dla każdego z nich), jednocześnie będąc w stanie wykonać "cały" commit mojego projektu, włączając zmiany wprowadzone do wtyczek i popychając je do inna lokalizacja (nie BitBucket).
To, co zrobiłem do tej pory, tworzy nowe repozytorium dla każdej z moich wtyczek. Mogę się zaangażować i z łatwością wepchnąć je do BitBucket. Ale kiedy poszedłem do zatwierdzenia mojego "głównego" repozytorium, TortoiseHg wyświetla komunikat o błędzie informujący, że abort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'
.
Widzę, że robię coś nie tak, ale nie wiem, co.
Używam nocny z Mercurial i TortoiseHg (ToirtoiseHg wersja 0.9.3 + 237-ea50f793bbe4 i Mercurial-1.4.3 + 225-70dea42c9406) na WinXP. Czytałem, że obsługa tego podrzutu została dodana do tej wersji TortoiseHg, ale, cóż, nie jestem nawet pewien, czy subrepos to funkcja, której powinienem użyć tutaj.
Aktualizacja
Zrobiłem pewne postępy, ale wciąż nie może zmusić go do pracy tak, że mi się podoba.
Oto moja konstrukcja:
-- .hg
-- core
-- app
-- file.php
-- file.css
-- plugins
-- plugin1
-- file1.php
-- plugin2
-- file2.php
Poszedłem do app/plugins i sklonowany do wtyczki (o nazwie plugin3) od BitBucket tutaj. Następnie utworzyłem plik .hgsub w katalogu głównym i dodałem do niego app/plugins/plugin3 = app/plugins/plugin3
. Byłem wtedy w stanie zatwierdzić mój cały katalog.
Ale wtedy próbowałem pobrać najnowszą wersję plugin1 z BitBucket, więc poszedłem do app/plugins, usunąłem plugin1/folder i sklonowałem plugin1 z BitBucket. Następnie dodałem app/plugins/plugin1 = app/plugins/plugin1
do .hgsub, ale kiedy próbowałem go zatwierdzić, powitano mnie: abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'
Problem pojawia się, gdy moje subrepo ma taką samą nazwę jak katalog już śledzony przez Hg w katalogu wtyczek /.
Co robię źle? Czy powinienem dodać/edytować coś specjalnego w .hg moich wtyczek?
Aktualizacja
W końcu udało mi się zmusić go do działania tak, jak chcę.
Musiałem "ręcznie" powiedzieć Mercurial, aby usunąć katalogi plugins/plugin1, plugins/plugin2, zatwierdzić zmianę, a następnie sklonować wtyczkę 1 i plugin2 z BitBucket, dodać app/plugins/plugin1 = app/plugins/plugin1
do .hgsub i zatwierdzić wszystko. Zadziałało.
Ważnym krokiem było zatwierdzenie po usunięciu folderów plugin1/plugin2.
Z dokumentu, wiersz z ".hgsub" jest "Pierwszy" zagnieżdżony "jest ścieżką w naszym roboczym katalogu, a drugi jest adresem URL lub ścieżką do pobrania z": więc nie powinieneś umieszczać " app/plugins/plugin3 = app/plugins/plugin3' ale 'app/plugins/plugin3 = bitbucket url for plugin3'. Ditto for plugin1 – VonC
Próbowałem tego, używając 'http: // bitbucket.org/username/plugin3 /', 'https: //nazwa_użytkownika @ bitbucket.org/username/plugin3 /' a nawet 'ssh: // hg @ bitbucket.org/nazwa_użytkownika/plugin3' jako adres URL, ale nadal mają ten sam komunikat o przerwaniu. Próbowałem alos bezpośrednio z wiersza poleceń, a wynik jest taki sam. – pixelastic
Przykro mi, że nie odpowiedziałem na Twój ostatni komentarz, ale jeśli Twój komentarz nie zaczyna się od "@VonC", nie zostałbym powiadomiony. Zobacz http://blog.stackoverflow.com/2010/01/new-improved-comments-with-reply/ (sekcja "Comment @username Notifications") – VonC