2010-03-24 11 views
22

Mój obecny projekt podzielony jest na 3 części: witrynę internetową, klienta komputerowego i wtyczkę do programu innej firmy. Początkowo używaliśmy Subversion do kontroli źródła, ale postanowiliśmy wypróbować Mercurial po przeczytaniu Joel Spolsky's final post. Zważywszy, że wcześniej nie korzystaliśmy z większości potencjału svn, pomyśleliśmy, że rozpoczęcie od nowych podstawowych pomysłów na to, jak działała kontrola źródła, ułatwiłoby to przejście.Rtęciowa strategia znakowania/rozgałęziania

Jednak po skonfigurowaniu naszego pierwszego repozytorium nie mamy pojęcia, jak tagowanie i rozgałęzianie powinno działać w takim projekcie.

Zasadniczo pracujemy nad wszystkimi trzema z tych części w tym samym czasie. Chcemy, aby uwolnienie było kombinacją 3 części. Obecnie pracujemy w jednym repozytorium.

Dla części wtyczki mamy pierwszą iterację zakończoną, którą nazywamy wtyczką v0.1. W przypadku pierwszej oficjalnej wersji pozostałych dwóch części chcielibyśmy również odnieść się do nich jako do strony internetowej v0.1 i do klienta komputerowego v0.1. Gdy wszystkie trzy części są w wersji v0.1, chcielibyśmy mieć pełny projekt v0.1.

Naszym problemem jest to, że nie jesteśmy pewni, jak sobie z tym poradzić w repozytorium Hg. Czy najlepszym rozwiązaniem byłoby utworzenie 3 oddzielnych repozytoriów dla 3 stabilnych wersji, a następnie 3 kolejne repozytoria dla bieżących wydarzeń? Obecnie mamy to wszystko w jednym repozytorium. Czy powinniśmy to robić w oddziałach (czy gałęzie różnią się od repozytoriów klonowania?) I tagami?

Każda pomoc jest bardzo doceniana.

+0

Niedawno zacząłem także rozważać Hg i były to w zasadzie dokładnie te same pytania, które miałem. –

Odpowiedz

8

Zdecydowanie brzmi to, jakbyś chciał mieć oddzielne repozytorium dla 3 części, jeśli musisz powiązać 3 razem w wydaniach, może być użyteczne, aby te 3 repozytorium były subrepos z ogólnego repozytorium projektu.

0

Spróbuj użyć Joel's Tutorial on Mercurial. To może dać trochę więcej lub jak z niego korzystać. Naprawdę nie ma "Rozgałęzień" jak w SVN i naprawdę, dobrym pomysłem byłoby przestać próbować używać Mercurial tak, jakby był SVN. Zamiast Branching masz własne lokalne repozytoria.

+2

Uruchamianie nowego repozytorium na gałąź to tylko JEDNA z możliwości obsługiwanych przez Mercurial. –

19

Gorąco polecam wpis w blogu Steve'a Losha: A Guide to Branching in Mercurial, w którym opisuje kilka podejść do rozgałęziania wspieranych przez Mercurial.

Funkcja nazwanych gałęzi Mercurial jest prawdopodobnie najbardziej zbliżona do rozgałęzienia z SVN.

5

Można przechowywać je w jednym repozytorium lub oddzielnie. Dla mnie będzie to zależeć od tego, ile kodu, jeśli w ogóle, jest dzielony między aplikacje. Jeśli kod nie jest współdzielony między komponentami, użyj dla każdego innego repozytorium.

Oddzielne repozytoria pozwalają łatwo oznaczyć każdy komponent wersją (v0.1), a następnie w razie potrzeby kontynuować programowanie. Kiedy jesteś gotowy do wydania połączonego produktu, po prostu wyciągnij z pożądanego tagu dla każdego repozytorium, a otrzymasz pełną wersję produktu. Jeśli masz elementy wynikowe dla aplikacji, które nie są powiązane z żadnym z trzech składników, możesz również utworzyć repozytorium dla połączonego produktu, aby zachować te dane. Możesz obsługiwać rozgałęzienia dla każdego komponentu za pośrednictwem oddziałów lub sklonowanych repozytoriów.

Jeśli przechowujesz komponenty w jednym repozytorium, nadal będzie działał, ale twoje tagi i gałęzie będą bardziej niepotrzebne. Gdy wtyczka dotrze do wersji v0.1, utwórz dla niej tag podobny do "wtyczki v0.1". Zrób to samo dla komputerów i klientów internetowych. Następnie, gdy chcesz zwolnić produkt, musisz pobrać z trzech różnych tagów, które zawierają każdy składnik w wersji v0.1.

Wybrałbym oddzielne repozytoria. Decyzja jest bardziej skomplikowana, jeśli istnieje wspólny kod, ale można znaleźć sposoby, aby wziąć swoje zależności w postaci bibliotek, a nie kodu.

W przypadku pytań dotyczących rozgałęzień, this article jest dobrym przewodnikiem po różnych opcjach i zaletach/wadach.

Powiązane problemy