Quando lavoro con git in un team usando i rami delle caratteristiche, trovo spesso difficile capire la struttura dei rami nella storia.
Esempio:
Supponiamo che esistesse una funzione / make-coffee nel ramo delle caratteristiche e che la correzione dei bug continuasse sul master in parallelo al ramo delle caratteristiche.
La storia potrebbe apparire così:
* merge feature/make-coffee
|\
| * small bugfix
| |
* | fix bug #1234
| |
| * add milk and sugar
| |
* | improve comments
| |
* | fix bug #9434
| |
| * make coffe (without milk or sugar)
| |
* | improve comments
|/
*
Problema
A prima vista, trovo difficile stabilire da che parte sia il ramo delle caratteristiche. Di solito ho bisogno di sfogliare diversi commenti su entrambi i lati per farmi un'idea di quale sia. Ciò diventa più complicato se ci sono più rami di funzionalità in parallelo (in particolare se si tratta di funzioni strettamente correlate) o se vi è stata una fusione in entrambe le direzioni tra il ramo di funzionalità e il master.
Al contrario, in Subversion, questo è significativamente più semplice perché il nome del ramo fa parte della storia - quindi posso dire subito che un commit è stato originariamente fatto su "feature / make-coffee".
Git potrebbe renderlo più semplice includendo il nome del ramo corrente nei metadati di commit durante la creazione di un commit (insieme a autore, data ecc.). Tuttavia, git non lo fa.
C'è qualche motivo fondamentale per cui questo non viene fatto? O è solo che nessuno voleva la funzionalità? Se è quest'ultimo, ci sono altri modi per comprendere lo scopo dei rami storici senza vedere il nome?