2010-02-06 7 views
8

Chciałbym ocenić Mercurial dla moich projektów roboczych. Jednak większość moich projektów bardzo mocno polega na obecności svn: externals-like support. Przeszukałem system StackOverflow i wyszukałem go w celu uzyskania odpowiedniego wsparcia w Mercurial. Wszystko, co znalazłem, to funkcja subrepo dodana w Mercurial 1.3, ale: the page for this feature:Czy funkcja subprepos w Mercurial 1.4.x jest gotowa do użytku produkcyjnego?

Podstrona to eksperymentalna funkcja dla Mercurial 1.3. Więc nie rób tego w repozytoriach o znaczeniu krytycznym!

Nie chcę używać czegoś niestabilnego.

Czy ktoś może rzucić nieco światła na rzeczywisty status tej funkcji, a także na plany jej polerowania/wykończenia i kiedy zostanie nazwany "stabilny" i gotowy do użycia w krytycznych repozytoriach?

+0

Zaktualizowałem wiki, aby lepiej poznać status, mam nadzieję, że to pomaga. –

Odpowiedz

6

Słowo w kanale IRC#mercurial mówi, że subrepos będzie działało tak jak oni, a wsparcie wzrośnie. Na przykład obecnie komenda "hg status" nie jest podporządkowana - działa, po prostu nie rekurencyjnie, ale w przyszłości będzie. Jednak bieżące zachowania, formaty plików (.hgsub i .hgsubstate) będą zmieniane tylko w sposób kompatybilny wstecz.

Więc śmiało licz na to i ciesz się, że będzie coraz lepiej.

P.S. Od wersji mercurial 1.4.2 subrepos mogą być teraz represjami subversion, więc możesz użyć rodzica mercurial i svn kid.

+0

Nie ma jasnej mapy drogowej dla tej funkcji? Powiedz, w hg 1.6 (lub 1.7) powinno być prawie ukończone, czy coś podobnego? – bialix

+3

Jest wystarczająco kompletny, aby można go było teraz użyć. Niektóre przepływy pracy będą nieco mniej uciążliwe, ale teraz są już gotowe. –

1

Miałem szczęście z funkcją mojego dotychczasowego (lekkiego) wykorzystania. Przydaje się w dwóch miejscach:

  1. Tworzenie kopii zapasowej drzewa niepowiązanych repozytoriów za pomocą pojedynczego polecenia hg pull.
  2. Wiązanie projektu wraz z określonymi wersjami jego zależności, tak aby pojedynczy hg clone uzyskał możliwy do zbudowania kod źródłowy. Jest to bliższe typowego użycia svn:externals.

Oto kilka ograniczeń widziałem się z nim do tej pory:

  1. W przypadku # 1 powyżej, trzeba zobowiązać wszystkie subrepos naraz. Jest to tylko czasami denerwujące, ponieważ Mercurial (jak każdy DVCS) zachęca do częstych zatwierdzeń —, więc większość repo nie jest pozostawiona w stanie niekompletnym na początku.
  2. tylko najbardziej podstawowe polecenia Mercurial są subrepo-aware: clone, push/pull, update/commit, a może i kilka innych.
  3. Autorzy rozszerzeń będą potrzebowali czasu na sprawdzenie swoich rozszerzeń względem repozytoriów z podraposami.

Gdy zespół Mercurial opisuje tę funkcję jako "eksperymentalną", nie oznacza to, że nagle zdecyduje się usunąć wszystkie dane. Chodzi tylko o to, że nie zakodowali wszystkich przypadków skrajnych, takich jak konflikty nazw (np. Jeden programista dodaje subrepozycję o nazwie README, a inny programista dodaje plik tekstowy o nazwie README).

+0

Mój przypadek użycia to # 2 na twojej pierwszej liście. – bialix

Powiązane problemy