Posiadanie pełnej historii zmian w Git ma wiele zalet w ramach procesu rozwoju.
Ale naszym produktem jest kod źródłowy, używamy języków skryptowych, które nie wymagają kompilacji ani przetwarzania, a następnie historia Git staje się obciążeniem przy wdrażaniu - w naszym przykładzie wdrażamy czyste środowisko wirtualne po każdej zmianie, mając kilka wdrożeń na pojedyncza maszyna.
Istnieje kilka sposobów na zmniejszenie ilości historii, na przykład płytkie klony, których efektywność zależy od tego, jak głęboko wersja znajduje się w gałęzi, wykonując pobranie zamiast klonowania, ale wtedy nadal pobiera się historię z wersji z powrotem i wstecz lub uzyskuje pełny w razie potrzeby repo, a następnie ściągnij, ale jest to marnotrawstwo pod względem miejsca na dysku i zwykle jest mniej niezawodne.
Czy istnieje sposób na uzyskanie jednej wersji z Git bez jego historii?
Odpowiedzi:
Płytki klon
Możesz naprawdę uzyskać płytkiego klona z Git, używając:
Spowoduje to nadal klonowanie repozytorium i utworzenie
.git
folderu z obiektami, tylko mniejszego rozmiaru (różnica w zależności od całkowitego rozmiaru pliku w porównaniu z rozmiarem historii).Archiwum Gita
Możesz także użyć git-archive, aby wyodrębnić archiwum repo:
W przykładach pokazuje na przykład:
Hostowany Git, archiwum API
Jeśli hostujesz swoje repozytorium na GitHub, możesz użyć ich archiwum API :
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
Bitbucket.org ma w tym celu tę samą funkcjonalność:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
źródło
Nie wdrażaj repozytorium git. Opracuj prawdziwą metodologię wdrażania. Nawet jeśli jest to tak proste, jak tarowanie archiwum (= budowanie artefaktu zawierającego tylko niezbędne pliki do wdrożenia) wdrożonych skryptów.
Nawet jeśli sklonujesz płytko wierzchołek swojego repozytorium źródłowego, prawdopodobnie nie potrzebujesz testów jednostkowych, dokumentacji, profili kłaczków i innych efemeryd wspierających we wdrożonym środowisku.
Uwaga : w przypadku repozytoriów języków skryptowych, które tak naprawdę nie mają kroku „kompilacji”, trywialnym sposobem wydania artefaktu byłoby spakowanie ich w archiwum, takim jak tar lub rpm. Następnie, aby „wdrożyć”, rozpakuj archiwum lub zainstaluj rpm. eliminuje to potrzebę używania narzędzi git w łańcuchu wdrażania (nie wszystkie serwery prod będą miały te narzędzia programistyczne).
źródło
Aby uzyskać repozytorium, nie ma mowy, głównie dlatego, że nie ma „rewizji”. Zatwierdzanie w sklepie Git, które są zmianami z poprzedniego stanu.
Jeśli chcesz, aby Twoje repozytorium miało miejsce w określonym momencie, musisz w tym momencie wyciągnąć zatwierdzenie i wszystkich jego przodków, albo dostaniesz tylko zmiany dokonane w zatwierdzeniu.
Aby uniknąć nieporozumień: Płytkie klonowanie polega na uzyskaniu potrzebnej historii, a następnie obcięciu jej do wolnego miejsca, drzewo jest nadal tworzone z historii.
W przypadku rozwiązań odpowiedź @ 7ochem ich obejmuje.
źródło