Das vollständige Git-Revisionsprotokoll zu haben, hat im Rahmen des Entwicklungsprozesses viele Vorteile.
Unser Produkt ist jedoch der Quellcode, wir verwenden Skriptsprachen, die weder kompiliert noch verarbeitet werden müssen, und dann wird der Git-Verlauf zu einer Last für die Bereitstellung. In unserem Beispiel stellen wir nach jeder Änderung eine saubere virtuelle Umgebung mit mehreren Bereitstellungen bereit eine einzelne Maschine.
Es gibt verschiedene Möglichkeiten, um den Verlauf zu reduzieren, z. B. flache Klone, deren Effizienz davon abhängt, wie tief die Revision in der Verzweigung ist, einen Abruf anstelle eines Klons durchführen, aber dann immer noch den Verlauf von der Revision und zurück oder den vollständigen Abruf repo einmal und dann ziehen, wenn nötig, aber dies ist verschwenderisch in Bezug auf den Speicherplatz und ist in der Regel weniger zuverlässig.
Gibt es eine Möglichkeit, eine einzelne Revision von Git zu erhalten, ohne dass dies in der Vergangenheit liegt?
Antworten:
Flacher Klon
Sie können in der Tat einen flachen Klon von Git erhalten, indem Sie Folgendes verwenden:
Dadurch wird das Repo immer noch geklont und ein
.git
Ordner mit den Objekten erstellt, der nur eine geringere Größe hat (Unterschied hängt von Ihrer Gesamtdateigröße im Vergleich zur Verlaufsgröße ab).Git-Archiv
Sie können auch git-archive verwenden , um ein Archiv des Repos zu extrahieren:
In den Beispielen zeigt es zum Beispiel:
Gehostete Git, Archiv-API
Wenn Sie Ihr Repo auf GitHub hosten, können Sie deren Archiv-API verwenden :
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
Bitbucket.org hat dafür die gleiche Funktionalität:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
quelle
Stellen Sie Ihr Git-Repo nicht bereit. Entwickeln Sie eine echte Bereitstellungsmethode. Selbst wenn es so einfach ist, ein Archiv (= Erstellen eines Artefakts mit nur den erforderlichen Dateien, die bereitgestellt werden sollen) von bereitgestellten Skripten zu erstellen.
Selbst wenn Sie die Spitze Ihres Quellrepositorys flach klonen, benötigen Sie in Ihrer implementierten Umgebung wahrscheinlich keine Komponententests, Dokumentation, Flusenprofile und andere unterstützende Ephemera.
Hinweis : Für Repositorys von Skriptsprachen, die keinen "Build" -Schritt haben, besteht eine einfache Möglichkeit, ein Artefakt freizugeben, darin, sie in ein Archiv wie tar oder rpm zu packen. Zum "Deployment" entpacken Sie dann das Archiv oder installieren die RPM. Dies macht Git-Tools in Ihrer Bereitstellungskette überflüssig (nicht alle Prod-Server verfügen über diese Entwickler-Tools).
quelle
Nein, es gibt keine Möglichkeit, ein Repository zu erhalten, hauptsächlich, weil es keine "Revision" gibt. Git Store-Commits, die Änderungen gegenüber dem vorherigen Status darstellen.
Wenn Sie möchten, dass Ihr Repository zu einem bestimmten Zeitpunkt erstellt wird, müssen Sie zu diesem Zeitpunkt das Commit und alle Vorfahren abrufen. Andernfalls werden nur die im Commit vorgenommenen Änderungen übernommen.
Um Verwechslungen zu vermeiden: Beim seichten Klonen wird der benötigte Verlauf abgerufen und anschließend auf freien Speicherplatz gekürzt. Der Baum wird weiterhin aus dem Verlauf erstellt.
Für die Lösungen deckt @ 7ochem answer diese ab.
quelle