So che la cronologia di Git è memorizzata in una struttura dati chiamata DAG. Ho sentito parlare di DFS e so che è in qualche modo correlato.Come funziona 'git log --graph' o 'hg graphlog'?
Sono curioso, come programmi come git log --graph
o hg graphlog
disegnano la cronologia? Ho sempre pensato che fosse piuttosto complicato disegnare le corsie e tutto in un modo così carino.
Qualcuno potrebbe scrivere qualche pseudo codice che lo dimostra?
nota: ho provato a guardare il codice di Git o hg ma è molto difficile da seguire e avere un'idea generale di cosa sta succedendo.
Ecco Git's [graph.c] (http://git.kernel.org/?p=git/git.git;a=blob;f=graph.c) come riferimento. –
Pubblica una versione semplificata (ma ben specificata) del problema "come visualizzare un DAG come grafico testuale" come una domanda SO e taggala come "codice-golf". Otterrai molte soluzioni intelligenti, in Python, Ruby, C, Perl ... Potresti chiedere alle persone di pubblicare il loro codice originale non golfistico e la loro versione "spremere ogni ultimo carattere". – MatrixFrog
Inoltre, è utile Git's [history graph API] (http://www.kernel.org/pub/software/scm/git/docs/technical/api-history-graph.html). –