est-il possible de faire un crochet de pré-valeur pour GIT ou SVN pouvant rejeter les fichiers non engagés dans un codage spécifique? p>
J'ai travaillé sur plusieurs projets où il semble être un problème de coller à un certain codage de fichier (comme UTF-8 par exemple) p>
3 Réponses :
Les crochets de précommture ne sont que des scripts. Donc, si vous pouvez indiquer l'encodage dans un script, vous pouvez utiliser ces informations pour rejeter le mauvais type de fichier. P>
Vous pouvez rechercher le fichier pour des personnages en dehors de la plage de caractères normale. S'il y a un numéro magique ou une balise pour vous indiquer le codage pour un fichier, vous pouvez vérifier cela. Sinon, demandez-vous "Comment savoir ce fichier est dans le mauvais encodage?" Pouvez-vous coder cela? P>
Vous pouvez peut-être utiliser utilitaire iconv pour modifier le codage de UTF-8 à par exemple UTF-16. Et si le changement échoue, le fichier source n'est pas dans l'encodage correct:
Votre iconv em> peut être capable de vous dire si quelque chose n'est pas utf-8, mais d'autres codages peuvent ne pas être aussi faciles (surtout 8 bits, des codages d'octets unique comme ISO-8859-1) . Pour GIT, vous pouvez réellement vouloir un crochet de mise à jour au lieu d'un crochet de pré-validation (afin qu'il puisse être exécuté dans un référentiel central pour appliquer la règle). P> Crochet de préentilation GIT : p> mettre un ou plusieurs pathspecs de git après le Pour vérifier la pointe de la référence mise à jour dans un crochet de mise à jour, utilisez - code> sur la ligne git ls-fichiers em> ligne de commande à limiter Les noms de chemin qui sont vérifiés. p>
git ls-arbores-nom-seul -r -z 3 $ - | code > Pour générer les chemins de matchs (REMARQUE: il ne gère pas les pathspecs de modèle comme git ls-fichiers em>, donc tout filtrage à base de modèle dans le code shell) et
git spectacle "$ 3: $ f " code> pour extraire le contenu du fichier. Vous voudrez peut-être aussi vérifier non seulement la pointe de commit, mais chaque nouveau commit (boucle pour chaque commit dans
Git Rev-list ^ $ 3 $ 3 code> au lieu de
3 $ code>). < / p> p>