Jak połączyć dwa projekty w Mercurial?

84

Mam dwa oddzielne repozytoria rtęci. W tym momencie ma sens, że „stają się jednym”, ponieważ chcę pracować nad dwoma projektami jednocześnie.

Naprawdę chciałbym, aby oba projekty były podkatalogami w nowym repozytorium.

  1. Jak połączyć oba projekty?
  2. Czy to dobry pomysł, czy powinienem trzymać je oddzielnie?

Wygląda na to, że powinienem móc przesuwać się z jednego repozytorium do drugiego… Może to jest naprawdę proste?

jm.
źródło

Odpowiedzi:

69

Udało mi się połączyć moje dwa repozytoria w ten sposób:

  1. Służy hg clone first_repositorydo klonowania jednego z repozytoriów.
  2. Służy hg pull -f other_repositorydo pobierania kodu z innego repozytorium.

Flaga -f(wymuszona) na ściągnięciu jest kluczem - mówi, aby zignorować fakt, że dwa repozytoria nie pochodzą z tego samego źródła.

Oto dokumenty dotyczące tej funkcji.

jm.
źródło
1
Czy to zachowuje również klucze skrótu zatwierdzeń z drugiego repozytorium? (Chyba nie, ale może być w porządku, dopóki nie dokonasz scalenia.)
Macke,
6
To działa, ale musisz też uruchomić, hg mergeaby w końcu wszystko działało
Factor Mystic
7
@Marcus Lindblom: pobranie zestawu zmian nigdy, przenigdy nie zmieni jego skrótu. Jeśli spojrzysz na to hg glogpo wykonaniu tej czynności, zobaczysz, że masz dwie niepowiązane linie zestawów zmian. Pierwszy zestaw zmian w każdej linii nie ma rodzica, ale nie stanowi to problemu dla Mercurial. Po pociągnięciu będziesz chciał wprowadzić jeden nowy zestaw zmian dla każdej linii, w której umieścisz hg mvwszystko w odpowiednim podfolderze, a następnie scalisz linie i wszystko gotowe.
Steve Losh
1
co się stanie, jeśli oba repozytoria mają kod wspólny dla obu z nich. Czy zostanie to automatycznie rozwiązane przez scalenie? a co do merge, możemy powiedzieć, że $ hg merge?
kamal
2
dla celów informacyjnych, oto dokumentacja tego procesu mercurial.selenic.com/wiki/MergingUnrelatedRepositories
Gent,
7

hg zaczął mieć subrepo od 1.3 (2009-07-01). Wczesne wersje były niekompletne i chwiejne, ale teraz jest całkiem użyteczne.

Geoffrey Zheng
źródło
2
Uważam, że praca z subrepos jest trudna. Działają, ale musisz przeskoczyć przez niektóre obręcze, aby się zachowywały i mogą być źródłem wielu bólów głowy, jeśli nie będziesz ostrożny.
Pete Duncanson
4
Warto zauważyć, że subrepozytoria są oficjalnie cechą ostatniej szansy: mercurial.selenic.com/wiki/Subrepozytorium (stan na 2013.11.12)
jtpereyda
3

Jeśli nie używasz tego samego kodu w projektach, trzymaj je oddzielnie. Można ustawić swój osobisty repozytorium każdego z tych projektów, które mają być tylko katalogiem siebie. Po co mieszać wszystkie gałęzie, scalać i zatwierdzać komentarze, kiedy nie jest to konieczne.

O Twojej edycji: przekazywanie z jednego repozytorium do innego. Zawsze możesz użyć transplantpolecenia. Chociaż wszystko to jest naprawdę na uboczu twojego pragnienia połączenia tych dwóch, więc możesz czuć się niekomfortowo, korzystając z moich sugestii. Wtedy możesz użyć rozszerzenia lasu lub czegoś podobnego.

hg transplant -s REPOSITORY lower_rev:high_rev
nlucaroni
źródło