2011-12-08 14 views
12

Mam centralne repozytorium i lokalne repozytorium. Repo ma "domyślną" gałąź i jedną nazwaną gałąź "mybranch". Jeśli pracuję w nazwie oddziału i chcą czasami scalić moje zmiany w domyślne, a następnie kontynuować pracę w nazwie oddziału należy zrobić to:Czy należy najpierw scalić nazwaną gałąź w domyślną gałąź lub odwrotnie?

  1. ciągnąć ostatni z centralnym repo do mojego lokalnego repo
  2. podczas pracy w mybranch, zrobić "hg merge default" do łączenia domyślnego INTO mybranch
  3. popełnienia lokalnie
  4. następnie zrobić "hg update default" i "hg merge mybranch" scalić mybranch INTO domyślnie
  5. popełnienia lokalnie
  6. push centralnym repo e LUB

zrobić to samo co powyżej, ale przełączyć # 2 z 4? (Tak, że ja scalanie mybranch INTO domyślnie pierwszy?

Odpowiedz

6

drodze trzeba go teraz (scalić default do mybranch pierwszego) jest mój preferowany sposób.

I mają tendencję do używania oddziałów do izolowania zmian dla danej funkcji lub refaktoryzacji, więc najlepiej przynieść Zestawienia zmian od default w nazwie oddziału w regularnych odstępach czasu. w ten sposób zmiany w nazwanych gałąź są uaktualniane na bieżąco w odniesieniu do default gałęzi.

+0

Dzięki - zapytałem, ponieważ na niektórych diagramach widziałem to w inny sposób, w którym najpierw scalono domyślnie. Więc nie wiedziałem, czy istnieje ku temu powód. Na przykład: http://nvie.com/posts/a-supcessful-git-branching-model/ (to jest Git, ale rozumiem ...) – BestPractices

+0

Ten diagram jest w porządku, ponieważ jedyna zmiana, która ma miejsce [prawie ] bezpośrednio do gałęzi 'master' jest ta poprawka, która również jest połączona z gałęzią' develop'. Jednym ze sposobów, w jaki można to zrobić, jest zatwierdzenie zmian w gałęzi 'master', a następnie połączenie' master' w 'develop'. Jedynym powodem, dla którego 'master' nie jest połączony z' develop'em jest to, że nic nie zmienia się w 'master', który musi być zintegrowany. Inną dobrą rzeczą, na którą warto zwrócić uwagę, jest interakcja między gałęziami "rozwijaj" i "release" na tym diagramie. –

+0

Kiedy patrzę na interakcję między "rozwinięciem" i "uwolnieniem gałęzi" na tym schemacie, wygląda na to, że "rozwija" najpierw zostaje połączone w "gałęzie uwalniania", a następnie "gałęzie uwalniania" zostają scalone w "rozwinięcie" Odgałęzienie, które jest przeciwnie niż obecnie robię rzeczy (jeśli myślisz o "gałęziach wydania" jako odpowiednikach "domyślnych" i "rozwijaj" jako odpowiednik "mojego oddziału". Czy źle interpretuję ten schemat? – BestPractices

11

Piszesz, że

chcą czasami scalić moje zmiany w domyślne, a następnie kontynuować pracę w nazwie oddziału

Nie powinno normalnie scalić gałąź funkcji w default oddziału, chyba że funkcja ta jest wykonywana. Może to właśnie miałeś na myśli?

Tylko dla odniesienia, zalecany przepływ pracy jest do zrobienia

  1. Tworzenie funkcji oddział
  2. Wykonaj swoją pracę tam
  3. regularnie (co kilka dni) scalić zmiany z default do gałęzi cecha:

    1. hg pull aby uzyskać najnowsze zmiany w porównaniu z innymi deweloperami
    2. hg merge integrować najnowsze zmiany do swojego fabularnego oddziału
  4. Gdy oddział funkcja jest wszystko zrobione, połączyć go z powrotem do default:

    1. hg pull
    2. hg update default do kasy oddziału ty chcesz połączyć się w
    3. hg merge myfeature, aby wykonać scalenie:

Końcowe scalenie będzie bardzo małe, ponieważ regularne łączenie default w gałęzi elementów zapewnia, że ​​odległość od dwóch główek gałęzi jest niewielka do wspólnego przodka.

+1

To prawda, jeśli twoje "cechy" są wystarczająco małe. Ale wielu z nas robi funkcje stopniowo, uzupełniając kawałki do rozsądnego standardu, nawet jeśli nie są całkowicie "zrobione". –

Powiązane problemy