2009-06-26 17 views
12

Firma, w której pracuję, chce mieć comiesięczne wydania i próbuję przekonać ich do przejścia na git. Uważam, że właściwym sposobem na poradzenie sobie z tym problemem jest posiadanie gałęzi integracji dla każdego wydania (tj. Co miesiąc) i posiadanie oddziałów z gałęziami integracji dla nowych projektów i zmian. Środowisko jest obciążone współzależnościami i czasami funkcja musi być odłożona na inny miesiąc z powodu opóźnień w wymaganych funkcjach z innych systemów zewnętrznych. Projekty będą zazwyczaj działać równolegle w 2-3 oddziałach integracyjnych, a działalność ogranicza się do grupy osób, które są w bliskim kontakcie. (Co oznacza, że ​​podejrzewam, że możemy używać przebieralni tak długo, jak długo jesteśmy w ostatniej gałęzi integracji, co jest prawdą co najmniej połowę czasu dla połowy ludzi).Opis przepływu pracy dla użycia git dla wewnętrznego rozwoju

W grę wchodzi sporo osób, więc naprawdę potrzebują prostych wskazówek, jak to zrobić, zarówno logicznego wyjaśnienia struktury gałęzi/scalania, jak i praktycznych poleceń git, aby to zrobić. Czy ktokolwiek wie o takim opisie, który jest rozsądnie odpowiedni dla takiego przepływu pracy?

Odpowiedz

11

logiczne wyjaśnienie struktury oddział/scalania

Struktura zasadzie następuje co mówiłeś: gałązkę integracji i posiada oddziały.
Ten rodzaj przepływu pracy jest kluczem do zrozumienia, tak jak Ty, że cały rozwój nie doprowadzi go do następnej wersji.
Ale z DVCS, jest również kluczem do zrozumienia, że ​​oddział może zostać opublikowany i sklonowany.

Ten ostatni punkt (publikacja) będą miały duży wpływ na scaleniu poleceń , a mianowicie:

  • seryjnej
  • rebase.

Gdy deweloper ma scalić swoją pracę na dowolnym oddziale integracyjnym (wyciągnął z „centralnego” repozytorium), polecam:

# switch back to previous release tag (from where feature branches for next release where done) 
$ git checkout previousReleaseTag 
# create one's own private 
$ git checkout -b myIntegrationBranch 
# merge or cherry-pick what we want to actually put in the next release 
$ git merge... from our feature branch 
# rebase that private integration branch on top of actual integration branch 
$ git rebase integrationBranch 

Ostatni rebase będzie przepisać historię lokalnego konsolidacji, ale w oddziale nie publikujesz tak (więc nie zaszkodzi).
Gdy wszystkie nowe funkcje działają, możesz połączyć z powrotem ten oddział prywatny z bieżącym rekordem HEAD odpowiedniego oddziału integracji.

"Oddział prywatny - scalenie lub wybór typu" wiśnia - odradzanie "- rozwiązanie lokalne - scalenie w przeszłość" to niezbędny przepływ pracy, ponieważ kilka zespołów będzie musiało połączyć swoją pracę ze wspólną gałęzią. Muszą powtórzyć to, co chcą opublikować w prywatnym oddziale przed połączeniem go ze wspólną gałęzią, w przeciwnym razie każdy zespół mógłby złamać to, co reprezentuje HEAD wspólnego oddziału.

Inne szczegóły w pytania:

+0

Hmm.Jeśli programista chce uwzględnić funkcje opublikowane poza własną maszyną, ostatni "git rebase" zmieni historię tych zatwierdzeń. Byłoby czystsze, aby po prostu połączyć wszystkie funkcje z publiczną gałęzią integracji (master?). –

+0

@Marius: ale co z częścią, kiedy wspominam: "Ostatni rebase przerobi historię twoich lokalnych konsolidacji, ale w oddziale, którego i tak nie opublikujesz (** więc nie zaszkodzi **)"? – VonC

Powiązane problemy