Za każdym razem, gdy dokonujesz zatwierdzenia w DVCS, technicznie tworzysz gałąź w historii, za każdym razem, gdy wypychasz ją z powrotem do błogosławionego repozytorium, integrujesz ją z powrotem, oto interesująca część:
- Jeśli nikt nie dokonał zmiany podczas zatwierdzenia, nie będzie wyglądać jak gałąź w DAG (skierowany wykres acykliczny)
- Jeśli ktoś dokonał zmiany podczas twojego zatwierdzenia, będzie to wyglądać jak gałąź w DAG, tylko bez nazwy
Pamiętasz przycisk „widelec” w Bitbucket / github ?, rozwidlenie można uznać za synonim rozgałęzienia, a to, co robi przycisk „widelec”, to po prostu klon tego repozytorium na Twoim koncie.
Jedyną zaletą „klonowania do gałęzi” jest możliwość jednoczesnej pracy w dwóch punktach historii, a jak na ironię dla współpracownika, jest to wspólny proces pracy dla różnych gałęzi w tym samym czasie (bez konieczności przechodzenia tam i z powrotem ).
Powiedz współpracownikowi, aby nauczył się rozgałęziać , jest to bardzo łatwe, tutaj masz samouczek:
D:\>mkdir lol
D:\>cd lol
D:\lol>hg init
D:\lol>hg branch
default
D:\lol>touch lol
D:\lol>hg add lol
D:\lol>hg commit -m "lol"
D:\lol>hg branch lol
marked working directory as branch lol
(branches are permanent and global, did you want a bookmark?)
D:\lol>hg branches
default 0:35d562fafaf2
D:\lol>echo "lol" > lol
D:\lol>hg commit -m "New lol branch"
D:\lol>hg branches
lol 1:9384f923e78d
default 0:35d562fafaf2 (inactive)
D:\lol>hg branch
lol
D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
default
D:\lol>hg update lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
lol
D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
default
D:\lol>hg merge lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
D:\lol>hg commit -m "lol merge"
D:\lol>hg branch
default
D:\lol>hg update lol
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branch
lol
„Klonowanie do gałęzi” ma sens, gdy pracujesz jednocześnie w różnych gałęziach lub gdy chcesz wypróbować eksperyment bez tworzenia stałej gałęzi w historii i nadal być w stanie zintegrować ją z już istniejącą gałęzią .
Ja osobiście nie lubię tej praktyki i wolę robić gałęzie i zamykać je w razie potrzeby. Oto jak to robisz:
D:\lol>hg branches
default 2:46420aca1612
lol 1:9384f923e78d (inactive)
D:\lol>hg branch
lol
D:\lol>hg commit --close-branch -m "Obai, glorious lol branch"
D:\lol>hg branches
default 2:46420aca1612
D:\lol>hg branch
lol
D:\lol>hg update default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
D:\lol>hg branches
default 2:46420aca1612
D:\lol>hg branches --closed
default 2:46420aca1612
lol 3:4b79c577e029 (closed)
Mam nadzieję, że rozwiąże to wątpliwości rozgałęziające się w DVCS, tutaj gałęzie nie są już przerażające.