28 votes

Git a-t-il quelque chose comme «svn propset svn: keywords» ou des hooks pré / post-commit?

La navigation à travers le git de la documentation, je ne peux pas voir quelque chose d'analogue à SVN commit des crochets ou la "propset" fonctionnalités qui peuvent, dire, mise à jour d'un numéro de version ou avis de droit d'auteur à l'intérieur d'un fichier chaque fois qu'il est engagé dans le référentiel.

Sont git les utilisateurs devraient écrire des scripts externes pour ce genre de fonctionnalité (qui ne semble pas hors de question) ou ai-je raté quelque chose d'évident?

Edit : Juste pour être clair, je suis plus intéressé, par exemple,

svn propset svn:keywords "Author Date Id Revision" expl3.dtx

lorsqu'une chaîne comme ceci:

$Id: expl3.dtx 780 2008-08-30 12:32:34Z morten $

elle est maintenue à jour avec les informations pertinentes à chaque fois qu'un commit se produit.

16voto

emk Points 27772

J'ai écrit un assez complet répondre à cet ailleurs, avec le code montrant comment le faire. Un résumé:

  1. Vous ne voulez probablement pas à le faire. À l'aide de git describe est une solution de rechange raisonnable.
  2. Si vous avez besoin pour ce faire, $Id$ et $Format$ sont assez faciles.
  3. Quelque chose de plus avancé nécessite l'usage d' gitattributes et un filtre personnalisé. - Je fournir un exemple de mise en œuvre de l' $Date$.

Les Solutions basées sur des fonctions de raccordement ne sont généralement pas utiles, car ils font de votre copie de travail sale.

9voto

Jordi Bunster Points 3840

Citant le Git FAQ:

Ne git ont l'expansion de mots clés?

Pas recommandé. Mot-clé de l'expansion provoque toutes sortes de problèmes étranges et n'est pas vraiment utile de toute façon, surtout dans le contexte d'une SCM. À l'extérieur git vous pouvez effectuer l'expansion de mots clés à l'aide d'un script. Le noyau Linux à l'exportation script pour définir la EXTRA_VERSION variable dans le fichier Makefile.

Voir gitattributes(5) si vous voulez vraiment le faire. Si votre traduction n'est pas réversible (par exemple les CLUSTERS à l'expansion de mots clés) cela peut être problématique.

4voto

georg Points 1742

Git a des hooks pré-commit et post-commit, ils sont situés à l'intérieur de chaque répertoire .git / hooks. Modifiez simplement les fichiers et modifiez-les pour les rendre exécutables.

2voto

James A. Rosen Points 25774

Peut-être que la propriété SVN la plus courante, «svn: ignore», se fait via le fichier .gitignore, plutôt que par les métadonnées. Je crains de n'avoir rien de plus utile pour les autres types de métadonnées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X