Le fait d'avoir l'historique de révision complet de Git présente de nombreux avantages dans le cadre du processus de développement.
Mais notre produit est le code source, nous utilisons des langages de script qui n'ont pas besoin de compilation ou de traitement, puis l'historique Git devient une charge pour le déploiement - dans notre exemple, nous déployons un environnement virtuel propre après chaque changement, ayant plusieurs déploiements sur une seule machine.
Il existe des moyens de réduire la quantité d'historique, par exemple des clones peu profonds dont l'efficacité dépend de la profondeur de la révision dans la branche, en effectuant une extraction au lieu de cloner, mais vous obtenez toujours l'historique de la révision et inversement, ou en obtenant l'intégralité repo une fois puis tirez quand vous en avez besoin, mais cela est un gaspillage en termes d'espace disque et a tendance à être moins fiable.
Existe-t-il un moyen d'obtenir une seule révision de Git sans son historique?
Réponses:
Clone peu profond
Vous pouvez en effet obtenir un clone peu profond de Git en utilisant:
Cela clonera toujours le dépôt et créera un
.git
dossier avec les objets, mais de taille plus petite (différence en fonction de la taille totale de votre fichier par rapport à la taille de l'historique).Archives Git
Vous pouvez également utiliser git-archive pour extraire une archive du dépôt:
Dans les exemples, il montre par exemple:
Git hébergé, API d'archivage
Si vous hébergez votre dépôt sur GitHub, vous pouvez utiliser leur API d'archivage :
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
Bitbucket.org a la même fonctionnalité pour cela:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
la source
Ne déployez pas votre dépôt git. Développer une véritable méthodologie de déploiement. Même si c'est aussi simple que de tarauder une archive (= construire un artefact avec juste les fichiers nécessaires à déployer) de scripts déployés.
Même si vous clonez peu profondément la pointe de votre référentiel source, vous n'avez probablement pas besoin de tests unitaires, de documentation, de profils de peluches et d'autres éphémères de support dans votre environnement déployé.
Remarque : pour les référentiels de langages scriptés qui n'ont pas vraiment d'étape de «construction», une manière triviale de libérer un artefact serait de les empaqueter dans une archive, comme tar ou rpm. Ensuite, pour "déployer", vous décompressez l'archive ou installez le rpm. cela supprime le besoin d'outils git dans votre chaîne de déploiement (tous les serveurs de prod n'auront pas ces outils de développement).
la source
Pour obtenir un référentiel, non, il n'y a aucun moyen, principalement parce qu'il n'y a pas de «révision». Les validations de Git Store, qui sont des modifications par rapport à l'état précédent.
Si vous voulez que votre référentiel à un moment précis, vous devez retirer le commit à ce moment et tous ses ancêtres ou vous n'obtiendrez que les modifications apportées dans le commit.
Pour éviter toute confusion: le clonage superficiel obtient l'historique nécessaire puis le tronque en espace libre, l'arbre est toujours fabriqué à partir de l'histoire.
Pour les solutions, @ 7ochem answer les couvre.
la source