2010-12-13 15 views
13

Jeśli strategia rozgałęzienia obejmuje gałęzie funkcji, to "master" (mainline) i "integration" branch. Jaki jest cel branży integracyjnej? Dlaczego testowanie i integracja nie mogą być wykonywane w samej gałęzi funkcji?Jaki jest cel "oddziału integracyjnego"?

Odpowiedz

13

Ponieważ jest to gałąź funkcji. Powinien zawierać tylko zmiany odnoszące się do jednej funkcji. Oddział integracji jest miejscem, w którym łączy się wiele funkcji do testowania, przed ostatecznym naciśnięciem na master.

Oczywiście nie musisz mieć, aby rozdzielić rzeczy w ten sposób. Możesz może zrobić integracji na oddziałach funkcji, tak jak może zrobić całą swoją pracę na master. Ale oddzielenie obaw jest dobrą rzeczą.

+1

Co to jest typowy przepływ pracy przy użyciu tej strategii rozgałęziania? Uzyskaj kod "programisty kompletny" w gałęzi funkcji i przejdź do gałęzi integracji, aby utworzyć wersję dla kontroli jakości? – Ben

+0

@Ben: Zasadniczo tak. Pierwszym krokiem byłoby jednak połączenie z najnowszymi zmianami w kapitanie, zwłaszcza jeśli funkcja była już od pewnego czasu. Właściwie funkcja powinna regularnie łączyć się z wzorcem, aby uniknąć dużego nieładu na końcu. Zauważ też, że nie musi istnieć jedna ostateczna gałąź integracji. Jedna gałąź integracji może służyć do scalania niektórych funkcji dla wersji * x *, podczas gdy inna gałąź integracji jest jednocześnie używana do zestawiania serii poprawek dla wersji * x * - 1. Krótko mówiąc, rozgałęzienie powinno odzwierciedlać twój przepływ pracy - nic więcej, nic mniej. –

+0

, gdy program został przeniesiony do gałęzi integracji, w jakich okolicznościach zostałby dodatkowo wprowadzony do gałęzi funkcji? – Ben

2

Jednym z głównych powodów, dla których często dostrzegam potrzebę istnienia gałęzi "integracyjnej", jest sytuacja, w której twoje gałęzie cech są niesprawdzalne same. Z mojego doświadczenia wynika to zazwyczaj z zależności od bazy danych. Lub, rozważ projekt strony internetowej, który jest wspierany przez bazę danych ... powiedzmy, że jest to aplikacja JSP hostowana w BEA Weblogic, z powrotem przez bazę danych Oracle o pojemności 60 GB; Wymagałoby to dużo sprzętu, aby dać każdej gałęzi funkcji własną instancję BEA Weblogic i Oracle do przetestowania. Zamiast tego generalnie łatwiej jest jak najlepiej rozwinąć gałąź funkcji, ale przejść do oddziału integracji w celu pełnego testowania QA, gdzie kontrola jakości musi być przeprowadzona na pełnym serwerze sieciowym i bazie danych.

3

Aby nieco dokładniej wyjaśnić, dlaczego dokładnie "separacja jest dobra": Celem oddziału integracji jest ustalenie, czy nowe funkcje działają nie tylko samodzielnie, ale także w połączeniu z innymi nowymi funkcjami. Oznacza to, że mogą nie, funkcje mogą powodować konflikty, których rozwiązanie zajmuje trochę czasu.

Jednak nadal możesz chcieć rozpocząć wdrażanie podzestawu nowych funkcji do gałęzi linii głównej, więc nie blokujesz wszystkich funkcji, ponieważ występuje niezgodność między nimi.

Teraz, jeśli już połączono gałęzie funkcji ze sobą, trudno będzie połączyć je osobno w linię główną. To nie jest całkowicie niemożliwe, ale na pewno jest to kłopot (próbowałem).

Jeśli gałęzie obiektów zawierają główne fragmenty kodu lub zachodzą na siebie w znacznym stopniu w odniesieniu do obszarów kodu, nad którym trwają prace, możesz nawet chcieć rozwinąć tę ideę i mieć rozgałęzienia integrujące dwie funkcje przed scaleniem nigdzie indziej, w tym w oddziale globalnej integracji, mi. mają wiele poziomów integracji. Oczywiście nie jest to zazwyczaj pożądana sytuacja, ale możesz nie być w stanie jej uniknąć, a wynikające z niej konflikty mogą być o wiele łatwiejsze do rozwiązania, jeśli jesteś hojny z gałęziami integracji.