Descrizioni dei rami in git

C’è un modo per dare una “descrizione” per i rami? Mentre cerco di usare nomi descrittivi, lavorare per un po ‘su un singolo ramo a volte smorza la memoria del motivo per cui ho creato alcuni degli altri rami dell’argomento. Cerco di usare nomi descrittivi per i rami ma penso che una ‘descrizione’ (una breve nota sullo scopo del ramo) sia carina.

Git 1.7.9 supporta questo. Dalle note sulla versione 1.7.9 :

  * "git branch --edit-description" può essere usato per aggiungere testo descrittivo
    per spiegare di cosa tratta un argomento.

Puoi vedere quella funzionalità introdotta a settembre 2011, con commit 6f9a332 , 739453a3 , b7200e8 :

struct branch_desc_cb { const char *config_name; const char *value; }; --edit-description:: 

Apri un editor e modifica il testo per spiegare a cosa serve il branch, per essere usato da vari altri comandi (es. request-pull ).

Si noti che non funzionerà con un ramo HEAD distaccato.

Quella descrizione è usata dallo script request-pull: vedi commit c016814783 , ma anche git merge --log .

request-pull è uno script utilizzato per riepilogare le modifiche tra due commit allo standard output e include l’URL specificato nel riepilogo generato.

[Da @AchalDave] Sfortunatamente, non puoi spingere le descrizioni poiché sono memorizzate nella tua configurazione, rendendola inutilizzabile per documentare le filiali in una squadra.

Se finisci per usare il README, crea un alias git checkout modificando il git checkout modo che il tuo README sia visualizzato ogni volta che cambi succursali.

Ad esempio, aggiungi questo in ~ / .gitconfig, in [alias]

 cor = !sh -c 'git checkout $1 && cat README' - 

Dopo questo, puoi eseguire git cor per cambiare ramo e visualizzare il README del ramo a cui stai passando.

Il README suggerito da Chris J può funzionare, a condizione che sia impostato con un driver di fusione personalizzato definito in un .gitattribute .
In questo modo, la versione locale del README viene sempre mantenuta durante le unioni.

La “descrizione” per i rami è anche nota come “commento” associato a quei metadati e non è supportata.

Almeno, con un file README , puoi, per ogni ramo, fare un:

 $ git show myBranch:README 

Se il tuo README si trova nella directory principale del tuo REPO, funzionerà da qualsiasi percorso, poiché il percorso utilizzato da git show è assoluto dalla directory principale di tale repository.

Usa git branch --edit-description per impostare o modificare la descrizione di una succursale.

Ecco una funzione di shell per mostrare rami simili al git branch ma con le descrizioni aggiunte.

 # Shows branches with descriptions function gb() { branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||') for branch in $branches; do desc=$(git config branch.$branch.description) if [ $branch == $(git rev-parse --abbrev-ref HEAD) ]; then branch="* \033[0;32m$branch\033[0m" else branch=" $branch" fi echo -e "$branch \033[0;36m$desc\033[0m" done } 

Ecco come appare gb , mostrato qui come testo nel caso in cui l’immagine marcisca:

 $ gb * logging Log order details. Waiting for clarification from business. master sprocket Adding sprockets to the parts list. Pending QA approval. 

E come immagine, così puoi vedere i colors:

inserisci la descrizione dell'immagine qui

Ci sono due suggerimenti popolari qui:

  1. git branch --edit-description : Non ci piace perché non puoi spingerlo. Forse posso ricordare cosa fanno i rami che ho creato, ma la mia squadra non può.
  2. File README pr. ramo. Questo è un problema durante le unioni: Super-incline per unire i conflitti e inseriremo README dai rami quando uniamo i rami delle caratteristiche. Anche le differenze tra i rami sono un dolore.

Abbiamo deciso di creare un branches-readme orphan branches-readme branch. I rami orfani sono rami con una propria storia separata: potresti conoscerli dai rami gh-pages di Github. Questo ramo orfano contiene un singolo file README . Ha contenuti come:

 master: The default branch mojolicious: Start using Mojolicious branch-whatever: Description of the whatever branch 

È push-in grado e facile da usare. Visualizza il README da qualsiasi ramo con:

 git show branches-readme:README 

Gli svantaggi sono che è necessario controllare il ramo orfano strano quando si desidera aggiornare il README e il file README non si aggiorna automaticamente quando i rami vengono rinominati, vieni o vai. Per noi va bene, comunque.

Fai come:

 git checkout --orphan branches-readme # All the files from the old branch are marked for addition - skip that git reset --hard # There are no files yet - an empty branch ls vi README # put in contents similar to above git add README git commit -m "Initial description of the branches we already have" git push origin branches-readme # get all your original files back git checkout master 

Similari, i singoli membri del team possono anche creare le proprie branches-$user orfane branches-$user che descrivono le proprie filiali private, se lo desiderano, purché non le trasferiscano al team.

Con ulteriori strumenti questo potrebbe anche essere integrato con l’output di git branch . A tal fine, potrebbe essere considerato un file README.yaml invece di un README semplice.

 git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe' 

Il comando definirà un’opzione globale alias.about espressione della shell. L’esecuzione di git about in un repository mostrerà la descrizione del ramo se impostata.

Ecco una ansible implementazione del comando dei git branches Greg Hewgill ha alluso a:

 #!/usr/bin/perl sub clean { map { s/^[\s\*]*\s// } @_; map { s/\s*$// } @_; return @_; } sub descr { $_ = `git config [email protected]_.description`; s/\s*$//; return $_; }; sub indent { $_ = shift; s/^/ /mg; return $_; }; my @branches = clean `git branch --color=never --list`; my %merged = map { $_ => 1 } clean `git branch --color=never --merged`; for my $branch (@branches) { my $asis = `git branch --list --color=always $branch`; $asis =~ s/\s*$//; print " $asis"; print " \033[33m(merged)\033[0m" if ($merged{$branch} and $branch ne "master"); print "\n"; print indent descr $branch; print "\n"; print "\n"; } 

Puoi albind commenti ai tag:

 git tag -m 'this was a very good commit' tag1 

Per convenzione, potresti avere tag relativi ai nomi dei tuoi rami oppure puoi utilizzare il tag -f per mantenere un tag commentato all’inizio dei rami degli argomenti.

uso:

 git branch --list -v 

per mostrare il ramo upstream:

 git branch --list -vv 

aggiungi -r per mostrare solo i telecomandi o -a per mostrare i telecomandi e il locale

Sono abbastanza sicuro che la funzione non è attualmente supportata. Penso che la cosa migliore da fare sia creare un file di testo descrittivo, un README in pratica, nel ramo che ha le informazioni che vuoi.

La risposta selezionata mi sembra eccessiva. Sarei incline a mantenere un file di descrizione per ramo che è un normale file controllato da fonti, ad esempio master.txt , dev.txt , ecc. E se c’è un numero o rami dev.txt creo una gerarchia per organizzarla meglio .

Basta usare:

 git config branch..description 

Per dare credito laddove il credito è dovuto: https://glebbahmutov.com/blog/git-branches-with-descriptions/