Nasz projekt ma około 11 GB, z czego 10 to dane binarne (obrazy .png). W konsekwencji operacja a git diff
lub git status
zajmuje więcej niż minutę. Na szczęście wszystkie pliki danych są podzielone na folder o cudownej nazwie data
. Zadanie to „Unikaj kompresji, różnicowania i innych kosztownych operacji na plikach binarnych”.
Rozważano podział projektu na dwa repozytoria. Wtedy
data
byłoby repo zewnętrzny, który jest sprawdzany przez głównego kodu źródłowego repo. Zdecydowano, że narzut związany z utrzymywaniem synchronizacji repozytoriów będzie zbyt duży, szczególnie dla artystów, którzy pracują z plikami danych.Mówiąc wprost, git te pliki są binarne , z wyjątkiem rozważanych plików z różnic , ale te wydają się tylko częściowym rozwiązaniem pytania.
Wydaje mi się, że atrybuty git są rozwiązaniem, ale jak? Czy może jest lepsza architektura niż monolityczne repo?
Odpowiedzi:
Możesz użyć git-lfs lub podobnych narzędzi (git-fat, git-annex itp.). Te narzędzia w zasadzie zastępują pliki binarne w repozytorium małym plikiem tekstowym z skrótami i przechowują rzeczywiste dane binarne w sposób inny niż git - jak udział sieciowy.
Sprawia, że różnice i wszystko są superszybkie, ponieważ porównywane są tylko skróty, i jest - przynajmniej dla git-lfs - przezroczyste dla użytkownika (po jednorazowej instalacji).
Afaik git-lfs jest obsługiwany przez github, gitlab, VisualStudio i jest open source.
źródło
git-lfs
projekt z wieloma gigabajtami zasobów w mieszanym zespole programistów / artystów? Chcę wiedzieć, czy ludzie używają git-lfs do projektów takich jak gry i animacje. Ponieważ jest jeszcze dość nowy w momencie pisania. Z mojego własnego doświadczenia, bariera wejścia do git dla mniej technicznych użytkowników jest już bardzo wysoka, więc posiadanie dodatkowej warstwy do zarządzania plikami na niej może być trudne dla ludzi, chyba że nie są już dobrze zaznajomieni z git.Użyj zarówno repozytoriów GIT, jak i SVN
Jeśli pliki binarne można oddzielić logicznie od źródła, możesz rozważyć użycie git dla plików tekstowych i nie DVCS, takich jak subversion dla plików binarnych.
Projekt, nad którym pracuję, robi to, ponieważ mamy wiele GB na skompilowane biblioteki (dla zależności OSX / Win32), które musimy zachować w wersji.
Z drugiej strony, jeśli masz nietechnicznych użytkowników, używanie dwóch systemów kontroli wersji może być problematyczne. Jednak jeśli artyści nie pracują nad kodem, możesz podać skrypt do wykonania aktualizacji, a oni mogą użyć subversion do zatwierdzenia zasobów binarnych.
Użyj SVN (z
git svn
)Chociaż ta kompromis nie zawsze jest tak miły dla programistów, którzy są przyzwyczajeni do korzystania ze zwykłego git, możesz użyć SVN dla głównego repozytorium, a programiści mogą używać
git svn
narzędzi.To sprawia, że jest to trochę więcej pracy dla programistów używających git, ale oznacza to dla wszystkich, którzy nie znają DVCS (lub ogólnie VCS) - mogą korzystać z prostego modelu SVN bez konieczności korzystania z wielu złożonych systemów kontroli wersji.
git-lfs też jest opcją, ale nie skorzystałem z niej, więc nie mogę powiedzieć, jak dobrze działa.
źródło