Normaliser les noms de vos branches Git avec validate-branch-name.
Lorsqu’on utilise un outil de gestion de versions (qui sait gérer les branches), on en vient très vite à se poser la question : comment nommer au mieux mes branches ?
Il n’existe (hélas ?) pas de convention ou de standard comme on a pu le voir pour les commits. Cependant il est recommandé de nommer soigneusement vos branches pour identifier facilement le thème global traité par un ensemble de commits. On définit donc généralement une convention.
1. Fonctionnement de validate-branch-name
validate-branch-name analyse la branche que vous tentez de pousser (git push) et stoppe l’opération si les contraintes ne sont pas respectées.
On peut renseigner ces contraintes dans un fichier de configuration. Sinon les motifs autorisés par défaut seront utilisés et vérifieront que :
- les branches correspondent exactement à main ou develop ;
- sinon que les branches sont préfixées par feature, fix, hotfix ou release, suivi d’un slash (/).
2. Mise en place
Pour installer validate-branch-name, il suffit d'executer la commande ci-dessous :
npm i -g validate-branch-name
pnpm add -D validate-branch-name
ensuite, nous devons configurer le hook pre-push de husky pour la prise en compte de l'outil :
npx husky add .husky/pre-push "pnpm validate-branch-name"
On configure dans le fichier package.json les differentes regles de verification à appliquer pour les branches en utilisant le block validate-branch-name comme decrit ci-dessous :
{
"validate-branch-name": {
"pattern": "^(main|develop){1}$|^(feature|fix|hotfix|release)\/.+$",
"errorMsg": "🤨 La branche que tu essaies de pusher ne respecte pas nos conventions, tu peux la renommer avec `git branch -m <nom-actuel> <nouveau-nom>`"
},
"devDependencies": ...
}
Nous pouvons tester maintenant que la configuration est en place :
$ git push origin 2-code-formatting
Result: "failed"
Error Msg: 🤨 La branche que tu essaies de pusher ne respecte pas nos conventions, tu peux la renommer avec `git branch -m <nom-actuel> <nouveau-nom>`
Branch Name: "2-code-formatting"
Pattern:"/^(main|develop){1}$|^(feature|fix|hotfix|release)\/.+$/g"
husky - pre-push hook exited with code 1 (error)
error: failed to push some refs to 'https://github.com/Rajivhost/arpce-2022-training.git'