Najczęściej zadawane pytania i hginit.com były bardzo przydatne, aby pomóc mi przejść od svn do hg.Tworzenie pod-zachowań mercurial zachowują się jak subversion externals
Jednakże, jeśli chodzi o użycie podskarku Hg w charakterze zewnętrznych elementów subversion, próbowałem wszystkiego i nie mogę replikować ładnego zachowania zewnętrznych svn.
Oto najprostszy przykład tego, co chcę zrobić:
Init „lib” repozytorium To repozytorium nie ma być używany jako samodzielny; jest zawsze dołączane przez główne repozytoria , jako podkatalog.
Init jeden lub więcej tym repozytoriów zachować prosty przykład, będę "init" repozytorium o nazwie "main"
Have "główną" obejmują "lib" jako subrepository
Co ważne - A TUTAJ NIE MOŻNA DOSTAĆ DO PRACY: Kiedy modyfikuję plik wewnątrz "main/lib", a ja pchnę modyfikację, , to zmiana zostanie przekazana do repozytorium "lib" - NIE do kopii wewnątrz "głównego".
Wiersze poleceń mówią głośniej niż słowa. Próbowałem wielu wariacji na ten temat, ale tutaj jest sedno. Jeśli ktoś może odpowiedzieć, w liniach poleceń, będę zawsze wdzięczny!
1. Init "lib" repozytorium
$ cd/home/moi/hgrepos ## Gdzie ja przechowywania moje repozytoria Hg, na moim głównym serwerem
$ hg startowych lib
$ echo "foo"> lib/lib.txt
$ hg dodać lib
$ hg CI -A -m "Init lib" lib
2. Init "main" repozytorium, a to "lib" jako subrepos
$ cd/home/moi/hgrepos
$ hg startowe główne
$ echo "foo"> main/main.txt
$ hg dodawać główny
$ cd głównego
$ hg clone ../lib lib
$ echo "lib = lib"> .hgsub
$ hg ci -A -m "Init main".
Wszystko działa dobrze, ale kiedy robię klon "głównego" repozytorium i dokonuję zmian w plikach w "main/lib" i wprowadzam je, zmiany zostają przeniesione do "main/lib" , NIE do "lib".
w podręczniku Command-line-ESE, to jest problem:
$/home/moi/hg-test
$ hg clone ssh: //[email protected]/hgrepos/ lib lib
$ hg clone ssh: //[email protected]/hgrepos/main głównej
$ cd główne
$ echo foo >> lib/lib.txt
$ hg st
M lib.txt
$ hg com -m "zmodyfikowany lib.txt, od wewnątrz głównych repo" lib.txt
$ hg Push
do pchania ssh: //[email protected]/hgrepos/main/lib
Ta ostatnia linia danych wyjściowych z hg pokazuje problem.
Pokazuje, że dokonałem modyfikacji KOPIU pliku w bibliotece, a NIE pliku w repozytorium lib. Jeśli działało to tak, jak chciałbym, aby działało, push będzie do hgrepos/lib, NIE do hgrepos/main/lib. To znaczy, chciałbym zobaczyć:
$ hg Push
popychanie do ssh: //[email protected]/hgrepos/lib
Jeśli możesz odpowiedzieć na to POD WZGLĘDEM
OF LINIE KOMENDY RÓŻNIEJ NIŻ W ANGIELSKU,
ZOSTANĘ WIECZNIE wdzięczny!
Z góry dziękuję!
Emily w Portland
Emily, ja cieszę się udało. Co powiesz na wybór mojej odpowiedzi? To jest zwykła nagroda za czas spędzony na pomaganiu tutaj w SO. Twoje poprawki do odpowiedzi zwykle trafiają do komentarza na mój temat lub do zmiany "Aktualizuj" na twoje pytanie, a nie samej odpowiedzi. –
A tak naprawdę, patrząc na twoje instrukcje ssh: //, zastanawiasz się nad tym. Po wykonaniu moich kroków w celu skonfigurowania lokalnej konfiguracji subrepo, możesz po prostu sklonować "główne" repozytorium przez ssh i mercurial, aby utworzyć całe ustawienie główne/lib na zdalnym repo, wykonując oba ciągnięcia. To jest prawdziwa obietnica subrepos - pojedynczy klon dostaje wiele zagnieżdżonych repozytoriów. –