Кожен раз, коли ви берете зобов’язання в DVCS, ви технічно створюєте гілку в історії, кожного разу, коли ви повертаєте її назад до благословенного сховища, ви інтегруєте його назад, ось тут приходить цікава частина:
- Якщо ніхто не вносив змін під час здійснення комісії, це не буде схоже на гілку DAG (спрямований ациклічний графік)
- Якщо хтось інший змінив під час вашого зобов’язання, це буде схоже на відділення в DAG, лише без назви
Запам’ятайте кнопку «fork» у Bitbucket / github?, Розгортання може розглядатися як синонім розгалуження, а те, що робить кнопка «fork», є лише клоном цього сховища до вашого облікового запису.
Єдина перевага "клонування до гілки" - це можливість працювати одночасно в двох точках історії, і, як це не дивно, для вашого колеги, це звичайний робочий процес для роботи на різних галузях одночасно (без того, щоб повертатися вперед і назад ).
Скажіть своєму колезі, щоб навчитися вести гілки , тут дуже легко мати підручник:
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
"Клонування філії" має сенс, коли ви працюєте в різних галузях одночасно , або, якщо ви хочете спробувати експеримент, не створюючи постійної гілки в історії, і все ще мати можливість інтегрувати її назад до вже існуючої гілки .
Мені особисто така практика не подобається і я вважаю за краще займатися гілками та закривати їх у разі потреби. Ось так ви це робите:
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)
Сподіваюся, це очистить ваші сумніви щодо розгалуження DVCS, тут гілки вже не страшні.