Cada vez que se compromete en un DVCS técnicamente está haciendo una bifurcación en la historia, cada vez que lo devuelve al bendito repositorio lo integra de nuevo, aquí viene la parte interesante:
- Si nadie realizó un cambio durante su confirmación, no se verá como una rama en el DAG (gráfico acíclico dirigido)
- Si alguien más realizó un cambio durante su confirmación, se verá como una rama en el DAG, solo sin nombre
¿Recuerda el botón "bifurcación" en Bitbucket / github ?, bifurcación puede considerarse como un sinónimo de ramificación, y lo que hace el botón "bifurcación" es solo un clon de ese repositorio en su cuenta.
La única ventaja de "clonar en rama" es poder trabajar simultáneamente en dos puntos de la historia, e irónicamente para su compañero de trabajo, es un flujo de trabajo común para trabajar en diferentes ramas al mismo tiempo (sin tener que ir y venir) )
Dígale a su compañero de trabajo que aprenda a ramificarse , es muy fácil, aquí tiene un tutorial:
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
"Clonar en rama" tiene sentido cuando trabaja en diferentes ramas al mismo tiempo , o cuando desea probar un experimento sin crear una rama permanente en el historial y aún así poder volver a integrarlo en una rama ya existente .
Personalmente no me gusta esta práctica y prefiero hacer sucursales y cerrarlas si es necesario. Aquí, así es como lo haces:
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)
Espero que esto aclare sus dudas de ramificación DVCS, aquí las ramas ya no dan miedo.