C'est plus d'une question de savoir-faire probablement: p>
Je suis en version avec git et envoyer des fichiers pour un CMS PHP sur le site de test ou de production à l'aide de RSYNC. J'aimerais maintenant garder une trace sur ce que COMMIT est actuellement déployé à l'aide d'un système authentifié et automatisé, je pensais à cela: P>
Configurez un crochet GIT pour ajouter / mettre à jour un fichier texte avec la dernière balise et validez hachage. Ensuite, je peux facilement rechercher le commit. P>
Mon problème est qu'au moment de la préentilation, le script ne connaîtra pas le contrat de validation. Existe-t-il une méthode directe pour que cela soit fait (ou une autre approche entre les mêmes extrémités)? P>
Merci pour votre contribution à l'avance! p>
3 Réponses :
Ceci est une FAQ. p>
https://git.wiki.kernel.org/index. php / git_faq # fait_git_have_keyword_expansion.3f p>
Recherche pour Exporter-Strib in Gittattributes (5), vous devez utiliser Git-Archive (1) pour obtenir la substitution terminée. P>
(% h vous donne le hachage. Pour obtenir la balise, vous auriez toujours besoin d'un script qui appelle git-décrivez (1), je ne vois pas de format pour cela) p>
Beau! Après quelques essais et erreurs, voici mes .gitattribues: version.txt exporter-STI code>. Et ma version.txt:
$ Format:% h $ code>
Étant donné que vous utilisez rsync sur puis, inclure la version La chaîne fort> git décrit forte> ressemble à ceci: p> dans ce qui précède: < / p> Déployer code> votre code, alors, faites quelque chose comme ceci:
version.txt < / Code> Dans l'emballage RSYNC. P>
Merci, bien entendu, a vu votre réponse après avoir posté la mine - Vérifiez la réponse où Git s'en occuper. Venez penser à cela, laissant le script rsync en s'occuper de ses mérites, car il s'assure que le fichier de version est à jour. Je pourrais même prendre le script RSYNC jusqu'à présent pour refuser un déploiement s'il y a des changements non engagés dans la copie de travail.
Bonne idée de vérifier l'arbre de travail pour Strays. Pouvez-vous voter ma réponse si c'est utile? J'ai besoin de quelques points pour arriver au niveau suivant.
D'accord, je pense avoir une solution OK:
Il y a un crochet git appelé post-commit et voici ce que je fais: p>
contenu du fichier de crochet: p> maintenant je suis sûr que ce fichier est à jour après chaque commit, donc je suis tout défini aussi longtemps que je fais un commit avant de déployer. P> Notes: strong>
Nasty Beginner's Computer's Computer: Créez le fichier de crochet exécutable, Git ignore le fichier sans avertissement si ce n'est pas le cas. P> Tout sur Git Hooks: HTPTP://git-scm.com/book/fr/customizing-git-git-hooks P> Tout sur .gitignore: < un href = "http://git-scm.com/book/fr/git-basics-recording-change-a-the-Repository#Ining-Files"> http://git-scm.com/book/fr / Basics Git-Basics-Enregistrement-Changements-Changements-The-Repository # Ignorer-fichiers P> acclamations, P> Martin P> P>
Je penserais que vous voulez gérer cela sur le côté du déploiement. Écrivez un script pour effectuer vos déploiements, puis faites que le script copiez le hachage actuel quelque part dans chaque fichier avant de les copier.
Drôle, après avoir posté la question que j'ai exactement cette idée. Néanmoins, après avoir pris soin du fichier de version serait encore meilleur - de cette façon, cela ne comportera pas comment le déploiement est manipulé.
Si vous essayez de stocker les informations de version dans un fichier sous la version de la version de GIT, mettez-vous à jour et commisez, vous allez obtenir une nouvelle validation SHA1. :) Vous devez le faire en dehors de Git.
Non, cela est logiquement impossible et votre solution ne peut pas fonctionner. Placer l'ID de validation «actuel» dans un fichier changera nécessairement la validation actuelle. Vous pouvez (au mieux) mettre l'identifiant précédent i> dans le fichier, mais cela sera beaucoup moins utile. Vous êtes vraiment, vraiment i> ne devrait pas essayer de gérer cela avec git.