Je suis dans une position où je souhaite, lorsque j'exporte un sous-répertoire de mon référentiel git, que le hachage complet du commit en cours d'archivage soit inséré dans un fichier donné. La raison en est que j'expédie ce code (un sous-répertoire d'un référentiel trop grand pour exporter facilement) vers mon client, qui le construit ensuite (en dehors de l'environnement git), et nous voulons être en mesure de le savoir à partir des logs quelle version du code l'a généré, pour faciliter le débogage.Utilisation de l'attribut git d'exportation lors de l'exportation d'un sous-répertoire du référentiel
La solution apparaît comme si elle devrait être d'ajouter le fichier à .gitattributes
avec l'attribut export-subst
, et ont le jeton %H
remplacé par le git archive
a quand est exécuté. Je ne vois pas ce comportement, cependant.
J'ai utilisé la page a sur le livre Pro Git comme référence (voir here), mais en essayant de l'adapter pour une utilisation avec un sous-répertoire plutôt qu'avec la racine du référentiel.
Le répertoire que j'essaie d'exporter s'appelle iDevice
. J'ai créé un fichier sous ce dossier appelé hash_test
, qui contient le texte Last commit date: $Format:%cd$
.
Lorsque je cours git archive --format=tar HEAD:iDevice/ | gzip > test.tar.gz
, le fichier n'est pas modifié. Lorsque je cours git archive --format=tar HEAD | gzip > test.tar.gz
le fichier est modifié.
J'ai essayé de conserver le fichier .gitattributes à la racine de mon répertoire git, ainsi que dans la racine et les sous-répertoires. J'ai essayé de référencer le fichier en tant que iDevice/hash_test
et hash_test
dans le fichier .gitattributes (comme je pensais que cela pourrait ressembler à un bug que j'ai vu sur kerneltrap.org en utilisant --prefix = confused la commande d'archivage - l'URL se termine/mailarchive/git/2008/4/8/1378004 que je lierais correctement mais je n'ai pas la réputation de poster plus de liens ...). Rien de tout cela n'a aidé, cependant.
Toutes les suggestions seraient appréciées!
J'avais déjà mes .gitattributes dans le dossier iDevice, et je l'avais tout commis, mais pas de joie. Votre suggestion avec '' résolu cependant. Merci! –
Rowan