2016-02-23 16 views
18

Github ma limit na dużym pliku push. Więc jeśli chcesz przesłać duży plik do repo, musisz użyć Git LFS.Jaka jest zaleta git lfs?

Wiem, że to zły pomysł, aby dodać plik binarny w repozytorium git. Ale jeśli używam gitlab na moim serwerze i nie ma limitu rozmiaru pliku w repozytorium, i nie obchodzi mnie, że rozmiar repo jest super duży na moim serwerze. W tym stanie, jaka jest zaleta git lfs? git clone lub git checkout będzie szybciej?

+0

Czy porównałeś szybkość połączenia? – SOFe

+0

Nie. Próbuję to rozgryźć w zasadzie. – Sanster

+1

Z Git-LFS, klon będzie DUŻO szybszy. Kasa trochę dłużej, czas na pobranie plików umieszczonych w LFS. Ale jeśli NAPRAWDĘ potrzebujesz sprawdzać jakieś pliki binarne, to jest sposób na zrobienie tego. – Philippe

Odpowiedz

35

Specyfika Git (i innych systemów rozproszonych) w porównaniu do systemów scentralizowanych polega na tym, że każde repozytorium zawiera całą historię projektu. Załóżmy, że utworzysz plik o wielkości 100 Mb, zmodyfikuj go 100 razy w sposób, który nie kompresuje się dobrze. W efekcie otrzymasz repozytorium 10 GB. Oznacza to, że każdy klon pobierze 10 GB danych, zjem 10 GB miejsca na dysku na każdym komputerze, na którym robisz klona. Co jeszcze bardziej frustrujące: nadal musisz pobrać te 10 GB danych, nawet jeśli git rm duże pliki.

Umieszczanie dużych plików w osobnym systemie, takim jak git-lfs, pozwala przechowywać tylko wskaźniki do każdej wersji pliku w repozytorium, dlatego każdy klon pobierze tylko niewielką ilość danych dla każdej wersji. Kasa pobiera tylko wersję, której używasz, czyli 100 Mb w powyższym przykładzie. W rezultacie wykorzystujesz miejsce na dysku na serwerze, ale oszczędzasz dużo przepustowości i miejsca na dysku na kliencie.

Oprócz tego algorytm używany przez git gc (wewnętrznie, git repack) nie zawsze działa dobrze w przypadku dużych plików. Ostatnie wersje Gita poczyniły postępy w tej dziedzinie i powinny działać całkiem nieźle, ale użycie dużego repozytorium z dużymi plikami może spowodować kłopoty (np. Brak wystarczającej ilości pamięci RAM do przepakowania twojego repozytorium).

Powiązane problemy