Descriptions de twig en git

Y a-t-il un moyen d’avoir une description des twigs? Tandis que j’essaie d’utiliser des noms descriptifs, travailler pendant un moment sur une seule twig diminue parfois ma mémoire quant aux raisons pour lesquelles j’ai créé d’autres twigs. J’essaie d’utiliser des noms descriptifs pour les twigs mais je pense qu’une «description» (note courte sur le but de la twig) serait bien.

Git 1.7.9 supporte cela. A partir des notes de la version 1.7.9 :

  * "git branch --edit-description" peut être utilisé pour append du texte descriptif
    pour expliquer ce qu'est une twig de sujet.

Vous pouvez voir cette fonctionnalité introduite en septembre 2011, avec les commits 6f9a332 , 739453a3 , b7200e8 :

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

Ouvrez un éditeur et éditez le texte pour expliquer à quoi sert la twig, pour être utilisé par diverses autres commandes (par exemple, request-pull ).

Notez que cela ne fonctionnera pas pour une twig HEAD détachée.

Cette description est utilisée par le script request-pull: voir commit c016814783 , mais aussi git merge --log .

request-pull est un script utilisé pour résumer les changements entre deux validations sur la sortie standard et inclut l’URL donnée dans le résumé généré.

[De @AchalDave] Malheureusement, vous ne pouvez pas pousser les descriptions car elles sont stockées dans votre configuration, ce qui les rend inutiles dans le but de documenter les twigs d’une équipe.

Si vous finissez par utiliser le fichier README, créez un alias git checkout pour modifier la git checkout afin que votre README s’affiche chaque fois que vous changez de twig.

Par exemple, ajoutez ceci dans ~ / .gitconfig, sous [alias]

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

Après cela, vous pouvez lancer git cor pour changer de twig et afficher le fichier README de la twig vers laquelle vous passez.

Le README proposé par Chris J peut fonctionner, à condition qu’il soit configuré avec un pilote de fusion personnalisé défini dans un .gitatsortingbute .
Ainsi, la version locale du README est toujours conservée lors des fusions.

La “description” des twigs est également connue sous le nom de “commentaire” associé à ces métadonnées et n’est pas prise en charge.

Au moins, avec un fichier README , vous pouvez, pour n’importe quelle twig, faire un:

 $ git show myBranch:README 

Si votre README se trouve dans le répertoire racine de votre REPO, il fonctionnera à partir de n’importe quel chemin, car le chemin utilisé par git show est un chemin absolu du répertoire supérieur de ce repo.

Utilisez git branch --edit-description pour définir ou modifier une description de twig.

Voici une fonction shell pour afficher des twigs similaires à git branch mais avec des descriptions ajoutées.

 # Shows twigs with descriptions function gb() { twigs=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||') for branch in $twigs; 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 } 

Voici à quoi ressemble gb , montré ici sous forme de texte au cas où l’image pourrit:

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

Et comme une image, de sorte que vous pouvez voir les couleurs:

entrer la description de l'image ici

Il y a deux suggestions populaires ici:

  1. git branch --edit-description : Nous n’aimons pas ça parce que vous ne pouvez pas le pousser. Peut-être que je peux me rappeler ce que les twigs que j’ai créé, mais mon équipe ne peut pas.
  2. Fichier README pr. twig. C’est une douleur pendant les fusions: super-enclin à fusionner les conflits et nous allons extraire README partir des twigs lorsque nous fusionnons des twigs. Les différences entre les twigs sont également pénibles.

Nous avons décidé de créer une twig de twigs-readme orphelines. Les twigs orphelines sont des twigs avec leur propre historique – vous pouvez les connaître dans les twigs gh-pages de Github. Cette twig orpheline contient un seul fichier README . Il a des contenus comme:

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

Il est facile à transporter et à fusionner. Visualisez le README de n’importe quelle twig avec:

 git show twigs-readme:README 

Les inconvénients sont que vous devez extraire la twig orpheline étrange lorsque vous souhaitez mettre à jour le README et que le README ne se met pas à jour automatiquement lorsque les twigs sont renommées, vont ou viennent. Cela nous convient, cependant.

Faites-le comme:

 git checkout --orphan twigs-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 twigs we already have" git push origin twigs-readme # get all your original files back git checkout master 

De même, les membres individuels d’une équipe peuvent également créer leurs propres twigs-$user orphelines- twigs-$user twigs, en décrivant leurs propres twigs privées si elles le souhaitent, à condition qu’elles ne les transmettent pas à l’équipe.

Avec d’autres outils, cela pourrait également être intégré à la sortie de git branch . À cette fin, un fichier README.yaml pourrait peut-être être considéré à la place d’un README simple.

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

La commande définira une option globale alias.about tant alias.about de shell. Exécuter git about dans un référentiel affichera la description de la twig si elle est définie.

Voici une mise en œuvre possible de la commande de git twigs Greg Hewgill a fait allusion à:

 #!/usr/bin/perl sub clean { map { s/^[\s\*]*\s// } @_; map { s/\s*$// } @_; return @_; } sub descr { $_ = `git config branch.@_.description`; s/\s*$//; return $_; }; sub indent { $_ = shift; s/^/ /mg; return $_; }; my @twigs = clean `git branch --color=never --list`; my %merged = map { $_ => 1 } clean `git branch --color=never --merged`; for my $branch (@twigs) { 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"; } 

Vous pouvez joindre des commentaires aux balises:

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

Par convention, vous pourriez avoir des balises liées aux noms de vos twigs ou vous pourriez utiliser tag -f pour garder une balise commentée en tête de vos twigs de sujet.

utilisation:

 git branch --list -v 

pour montrer la twig en amont:

 git branch --list -vv 

append -r pour afficher uniquement les télécommandes ou -a pour afficher les télécommandes et les locales

Je suis sûr que cette fonctionnalité n’est pas prise en charge actuellement. Je pense que votre meilleur pari est de créer un fichier texte de description, un fichier README dans la twig qui contient les informations souhaitées.

La réponse choisie me semble exagérée. Je serais enclin à maintenir un fichier de description par twig qui soit un fichier normal contrôlé par une source, par exemple master.txt , dev.txt , etc. et s’il existe un nombre ou des twigs master.txt , dev.txt une hiérarchie pour mieux l’organiser. .

Utilisez simplement:

 git config branch..description 

Pour donner crédit lorsque le crédit est dû: https://glebbahmutov.com/blog/git-twigs-with-descriptions/