Het artikel beschrijft hoe je Git-branches kunt sorteren op de datum van de laatste commit. Waar de auteur voorheen een complex bash-script gebruikte om dit te bereiken, blijkt dit in moderne versies van Git ingebouwd te zijn.
De belangrijkste methoden zijn:
- Permanent:
git config branch.sort committerdate
- Eenmalig:
git branch --sort committerdate
Daarnaast wordt vermeld dat er andere sorteersleutels beschikbaar zijn, zoals authordate, contents:size (grootte van het commit-bericht) en refname (de standaardinstelling).
Sorteer branches op datum van laatste commit
function branches {
for k in `git branch | sed "s/^..//"`; do
echo -e `git log --color -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" "$k"`\t"$k";
done | sort
}
Dit zorgt ervoor dat de datum als eerste kolom in de uitvoer staat, zodat de sort-functie werkt. Het blijkt echter dat dit met moderne versies van Git totaal overbodig is. Je kunt git branch simpelweg configureren om te sorteren op de datum van de laatste commit:
git config branch.sort committerdate
Je kunt dit ook eenmalig uitvoeren met het volgende commando:
git branch --sort committerdate
Andere sorteermogelijkheden
Waar kun je nog meer op sorteren? De handleiding stelt: "De ondersteunde sleutels zijn dezelfde als die in git-for-each-ref(1)." De manpage voor git-for-each-ref somt een groot aantal velden op, waaronder enkele die voor mij als sorteersleutels minder logisch zijn. De volgende opties zijn echter interessant:
authordate, committerdate, creatordate, taggerdate
contents:size: De grootte in bytes van het commit- of tag-bericht.
push: De naam van een lokale ref die de @{push}-locatie vertegenwoordigt voor de getoonde ref.
refname: De naam van de ref (het deel na $GIT_DIR/) (dit is de standaardinstelling).
upstream: De naam van een lokale ref die als "upstream" kan worden beschouwd ten opzichte van de getoonde ref.
Ik heb te veel git-branches en, net als veel anderen, had ik een ingewikkeld script ontwikkeld om de meest recente branches weer te geven. Jarenlang heb ik dit commando meerdere keren per dag uitgevoerd:
Sorteer branches op datum van laatste commit
function branches {
for k in `git branch | sed "s/^..//"`; do
echo -e `git log --color -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" "$k"`\t"$k";
done | sort
}
Dit zorgt ervoor dat de datum als eerste kolom in de uitvoer staat, zodat de sort-functie werkt. Het blijkt echter dat dit met moderne versies van Git totaal overbodig is. Je kunt git branch simpelweg configureren om te sorteren op de datum van de laatste commit:
git config branch.sort committerdate
Je kunt dit ook eenmalig uitvoeren met het volgende commando:
git branch --sort committerdate
Andere sorteermogelijkheden
Waar kun je nog meer op sorteren? De handleiding stelt: "De ondersteunde sleutels zijn dezelfde als die in git-for-each-ref(1)." De manpage voor git-for-each-ref somt een groot aantal velden op, waaronder enkele die voor mij als sorteersleutels minder logisch zijn. De volgende opties zijn echter interessant:
authordate, committerdate, creatordate, taggerdate
contents:size: De grootte in bytes van het commit- of tag-bericht.
push: De naam van een lokale ref die de @{push}-locatie vertegenwoordigt voor de getoonde ref.
refname: De naam van de ref (het deel na $GIT_DIR/) (dit is de standaardinstelling).
upstream: De naam van een lokale ref die als "upstream" kan worden beschouwd ten opzichte van de getoonde ref.