Je voudrais écrire un hook git qui nettoie automatiquement le code, par exemple en supprimant les espaces de fin. Il est facile d'écrire un script pour rejeter certains commits, mais je préfère simplement corriger les problèmes de manière transparente lorsque cela est possible. Alors que je me rends compte que git a un support intégré pour ce genre de choses (conversion automatique des nouvelles lignes, etc.), mais je voudrais quelque chose de plus flexible. Est-il possible pour un hook de pré-commit de le faire? Pouvez-vous modifier l'index directement (ou y a-t-il une meilleure façon de le faire)? Je me rends également compte qu'en fin de compte j'ai besoin d'un hook serveur qui rejette les mauvais commits pour les développeurs qui n'utilisent pas le hook local, mais je voudrais aider ceux qui choisissent de l'utiliser. (S'il est possible de modifier le code sur le serveur, ce serait encore mieux, mais je ne le crois pas.)Écrire un crochet git pour modifier automatiquement le code pendant les validations locales
3
A
Répondre
0
Voici un exemple d'utilisation d'un pilote de filtre pour supprimer les espaces de fin. Notez qu'après avoir effectué une validation, les espaces resteront dans la copie de travail jusqu'à ce que vous passiez à la caisse. Notez également que les espaces entre parenthèses dans la commande sed ci-dessous sont un onglet et un blanc.
$ rm -rf .git $ git init Initialized empty Git repository in /private/tmp/foo/.git/ $ echo 'trailing white ' > file $ echo 'file filter=white' > .git/info/attributes $ cat << EOF >> .git/config > [filter "white"] > clean = sed 's/[ ]*$//' > EOF $ git add file $ git ci -m"Sample commit" [master (root-commit) 654fa8d] Sample commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 file $ git checkout -f master file $ cat -tve file trailing white$
Questions connexes
- 1. Git pour les branches locales
- 2. Combiner les commandes Git locales dans un commit pour git-svn
- 3. Crochet de validation de code JIRA pour 'git'
- 4. Git pré-réception crochet
- 5. Comment écrire un crochet git pour restreindre l'écriture à la branche?
- 6. crochet git pré-poussé?
- 7. Git pré-recevoir le crochet pour lancer PHP CodeSniffer
- 8. git et modifications locales
- 9. J'ai besoin d'un crochet Git pour synchroniser le schéma MySql
- 10. Nombre de validations dans un dépôt git
- 11. Dans MVP où écrire les validations
- 12. Impossible de pousser les validations depuis un sous-module git?
- 13. Comment décomposer une série de validations git en patches pour les soumettre à un autre projet
- 14. Comment puis-je voir les validations entrantes dans git?
- 15. Git post-réception crochet ne fonctionne pas
- 16. crochet git-clone et post-checkout
- 17. GIT annule un commit qui n'est pas le plus récent, rebase tous les validations depuis
- 18. maintient un ensemble de commits locales travaillant avec git-svn
- 19. Git crochet de courrier électronique pour inclure le message de validation et les fichiers modifiés
- 20. Afficher les validations non fusionnées dans une branche sur git
- 21. Affichage de nouvelles validations dans le référentiel Git distant
- 22. git: affiche tous les fichiers modifiés entre deux validations
- 23. Tronquer automatiquement à MaxLength pendant le mappage
- 24. git pull dans un crochet ne pas exécuter
- 25. Comment modifier le style d'indentation Eclipse pour le code généré automatiquement?
- 26. URI pour les ressources locales
- 27. Comment écrire un programme pendant la compilation?
- 28. Git post-réception crochet agit différemment à shell
- 29. Comment écrire le code pour les auditeurs dans TestNG?
- 30. Comment séparer automatiquement les commit git pour séparer les changements dans un seul fichier
Vous ne pouvez pas faire cela avec un crochet de validation, mais vous pouvez le faire avec un pilote de filtre. –
Vous pouvez effectuer un hook de pré-validation. Je l'utilise pour mettre des horodateurs sur un fichier particulier. C'est en fait assez facile. – tjameson