2010-03-09 20 views
8

Jaki jest najlepszy/najłatwiejszy sposób (lub czy jest to możliwe), aby dodać istniejące repozytorium do innego istniejącego repozytorium jako subrepo?Jak dodać subrepo do istniejącego repozytorium w Merkury

Sytuacja to Mam istniejący (główny) projekt, w którym chcę dołączyć projekt biblioteki, aby móc edytować projekt biblioteki z głównego projektu i zatwierdzić zmiany w projekcie bibliotecznym podczas realizacji głównego projektu.

Także: Czy muszę klonować/pchać/ciągnąć do pierwotnego projektu biblioteki, czy jest to wykonywane automatycznie po zatwierdzeniu w głównym projekcie?

Pozdrowienia
Jesper Hauge

+0

dobre pytanie - Dokumentacja subrepo nie jest najlepszym obecnie –

+0

Zgoda - Miałem nadzieję, że ktoś miał jakieś praktyczne doświadczenia z tym drugim, gdyż myślę, że moja sytuacja jest bardzo powszechna. – Hauge

Odpowiedz

5

Dokumentacja subrepołu zdezorientowała mnie tak bardzo, że napisałem scenariusz, aby streścić tę część.

addsubrepo.sh

nazwać to jak

$ cd $TOP_OF_HG_PROJECT 
$ addsubrepo.sh $URL_TO_HG_PROJECT relative_path/you/want_to/put_the_subrepo 
+0

Niestety jestem na pudełku Windows, więc nie mam skryptów powłoki dla mnie, ale twoje skrypty mogły być prawdopodobnie przeniesione do skryptu powłoki, wydaje się nieco przesadzone, dla takiej podstawowej funkcji: -o – Hauge

+1

Zawsze jest Cygwin, to jest duże, ale działa dobrze. – reinierpost

+0

Czuje się z góry, ale wydaje mi się, że za każdym razem, gdy próbuję wykonać subrepo w hg, spieprzę to. Teraz nie mam :) Przynajmniej to pokazuje, jak to się robi – RyanWilcox

0

Możesz chcieć użyć rozszerzenia deps.

+0

Czy rozszerzenie deps nie jest przeznaczone tylko dla repo zewnętrznych, które nie są repo mercurial? Czy deps pozwala mi zatwierdzać zmiany w repo "uwzględnionym"? – Hauge

+0

Zgodnie z dokumentami, obsługuje on "dowolny" typ repozytorium, w tym Mercurial – Mikezx6r

+0

Jeśli masz pod-repozytorium Mercurial, po prostu wpisz je i od tego miejsca pchnij. Będzie w stanie odróżnić "pojemnik" (wewnętrzny lub zewnętrzny). –

2

Czytając dokumenty, wtyczka subrepo obsługuje tej funkcji.

Jeszcze go nie używałem, ale najprawdopodobniej zacznę go używać w niedalekiej przyszłości.

Ulepszono każdą wersję Mercurial i uważam, że ludzie z powodzeniem go używają. Wydaje się, że poświęca mu się rozsądną uwagę i był na porządku dziennym ostatniego blitzu szyfrującego.

Zgodnie z help, pull, push, commit itp. Powinny również działać na subrepo. Wygląda na to, że zatwierdzenie sprawdzi, czy w subrepo są jakieś zmiany. Jeśli tak, zostaną zatwierdzone, a nowy zestaw zmian w subrepo zostanie zapisany w pliku .hgsubstate. Ten plik, a także zmiany w głównym repo zostanie zatwierdzony.

Po sklonowaniu, Mercurial powinien zobaczyć plik .hgs oraz plik .hgsub, poprawnie wyciągnąć subrepo i zaktualizować poprawną wersję.

0

Oto jak to zrobiłem:

$ cd /projects/main_project 
$ hg clone /projects/plugins/awesome plugins/awesome_plugin 
$ echo plugins/awesome_plugin = plugins/awesome_plugin > .hgsub 
$ hg add .hgsub 
$ hg commit -m "added awesome_plugin plugin as a subp-repo" 
Powiązane problemy