4520 shaares
2 résultats
taggé
branch
J'ai eu le besoin de nettoyer des tonnes et des tonnes de features-branches non-mergées et abandonnées dans nos répos Git. J'ai donc écrit un petit script bash qui va lister toutes les branches dont l'âge dépasse le nombre de jours indiqués en paramètre.
Utilisation
# Va lister toutes les branches qui n'ont pas bougées depuis plus de 180 jours
$ git-unused-branches 180
Le script
#!/usr/bin/env bash
if [ "$1" == "" ]; then
echo "Usage: git-too-old-branches <NB_DAYS>"
echo ""
echo "( NB_DAYS The lower age limit filter of branches"
echo " to list"
echo ""
echo "Example"
echo " To list any branches which has not been"
echo " changed since 90 days use :"
echo " git-unused-branches 90"
exit 1
fi
NB_DAYS="${1}"
SECONDS_IN_DAY=86400
TODAY_EPOCH_TIME=$(date +"%s")
## List everything expect
## - Production branches
## - Renovate branches
## - HEAD (master)
list_branches() {
local branches
branches=$(git branch -r | grep -v -E "origin/HEAD|origin/production|origin/renovate" | sed "s/ //" | sort)
echo "${branches}"
}
filter_branch() {
local ageGap
local branch
local branchAge
local maxDays
branch="${1}"
branchAge=$(git log "$branch" -n 1 --format=%ct)
ageGap=$(((TODAY_EPOCH_TIME-branchAge)/SECONDS_IN_DAY))
if (( ${ageGap} > ${NB_DAYS} )); then
echo "$branch is [$ageGap] days old"
fi
}
main() {
local branches
branches=$(list_branches)
for branch in ${branches}
do
filter_branch "${branch}"
done
}
main
En espérant que ça puisse aider certains :P
Un tutoriel très très simple (et visuel) sur la manière de merger et rebaser des branches dans Git.