Ogni volta che effettui un commit in un DVCS stai tecnicamente facendo un ramo nella storia, ogni volta che lo riporti nel repository benedetto lo integri di nuovo, ecco la parte interessante:
- Se nessuno ha apportato una modifica durante il commit, non sembrerà un ramo nel DAG (grafico aciclico diretto)
- Se qualcun altro ha apportato una modifica durante il commit, sembrerà un ramo nel DAG, solo senza nome
Ricorda il pulsante "fork" in Bitbucket / github ?, il biforcazione può essere considerato un sinonimo di ramificazione e ciò che fa il pulsante "fork" è solo un clone di quel repository sul tuo account.
L'unico vantaggio della "clonazione su ramo" è la capacità di lavorare simultaneamente in due punti della storia e, ironicamente, per il tuo collega, è un flusso di lavoro comune per lavorare su rami diversi contemporaneamente (senza dover andare avanti e indietro ).
Di 'al tuo collega di imparare come ramificare , qui è molto facile avere 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
"Clonare su un ramo" ha senso quando lavori contemporaneamente in diversi rami o, quando vuoi provare un esperimento senza creare un ramo permanente nella storia ed essere ancora in grado di integrarlo in un ramo già esistente .
Personalmente non mi piace questa pratica e preferisco fare rami e chiuderli se necessario. Ecco come si fa:
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)
Spero che questo cancella i tuoi dubbi ramificati DVCS, qui i rami non fanno più paura.