8
votes

Git: avoir actuellement le dash et la dernière balise dans le dossier sur commit

C'est plus d'une question de savoir-faire probablement:

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:

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.

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)?

Merci pour votre contribution à l'avance!


4 commentaires

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 dans le fichier, mais cela sera beaucoup moins utile. Vous êtes vraiment, vraiment ne devrait pas essayer de gérer cela avec git.


3 Réponses :


3
votes

Ceci est une FAQ.

https://git.wiki.kernel.org/index. php / git_faq # fait_git_have_keyword_expansion.3f

Recherche pour Exporter-Strib in Gittattributes (5), vous devez utiliser Git-Archive (1) pour obtenir la substitution terminée.

(% 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)


1 commentaires

Beau! Après quelques essais et erreurs, voici mes .gitattribues: version.txt exporter-STI . Et ma version.txt: $ Format:% h $



3
votes

Étant donné que vous utilisez rsync sur Déployer votre code, alors, faites quelque chose comme ceci: xxx

puis, inclure la version version.txt < / Code> Dans l'emballage RSYNC.

La chaîne git décrit ressemble à ceci: xxx

dans ce qui précède: < / p>

  1. La dernière étiquette est r1.0
  2. le 2 indique que nous sommes deux commettant cette étiquette
  3. Le g signifie 'Git' (OK, c'est un peu bizarre, mais bien)
  4. Le hachage actuel est CA93D0A

2 commentaires

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.



9
votes

D'accord, je pense avoir une solution OK:

Il y a un crochet git appelé post-commit et voici ce que je fais:

  • Je mets le fichier tenant la balise / hachage sur .gitignore (pour éviter les modifications inutiles sur le prochain commit)
  • Laissez la mise à jour post-validation de la mise à jour du fichier de version.

    contenu du fichier de crochet: xxx

    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.

    Notes: 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.

    Tout sur Git Hooks: HTPTP://git-scm.com/book/fr/customizing-git-git-hooks

    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

    acclamations,

    Martin


0 commentaires