Dostępnych jest wiele systemów kontroli wersji , w tym systemy typu open source, takie jak Subversion , Git i Mercurial , a także systemy komercyjne, takie jak Perforce .
Jak dobrze wspierają proces tworzenia gier? Jakie są problemy z użyciem VCS w odniesieniu do plików nietekstowych (plików binarnych), dużych projektów itp.? Jakie są rozwiązania tych problemów, jeśli takie istnieją?
Aby uporządkować odpowiedzi, spróbujmy dla poszczególnych pakietów. Zaktualizuj każdy pakiet / odpowiedź o swoje wyniki.
Proszę również podać w odpowiedzi kilka krótkich szczegółów na temat tego, czy VCS jest darmowy czy komercyjny, dystrybuowany czy scentralizowany itp.
Aktualizacja : Znaleziono fajny artykuł porównujący dwa VCS poniżej - najwyraźniej Git to MacGyver, a Mercurial to Bond . Cóż, cieszę się, że to ustalone ... A autor ma na końcu fajny cytat:
Prozelityzm dla tych, którzy nie przeszli jeszcze na rozproszony VCS, jest w porządku, ale próba konwersji użytkownika Gita na Mercurial (lub odwrotnie) jest stratą czasu i energii każdego.
Zwłaszcza, że prawdziwym wrogiem Gita i Mercuriala jest Subversion . Dang, to świat kod-jedz-kod tam w FOSS-land ...
źródło
Odpowiedzi:
Git
Ostatnio byłem na modowym gitarze (korzystałem z SVN i Mercurial). Jak dotąd bardzo podoba mi się to, co dostaję z Git. Konfiguracja nie jest trudna, a kolejne narzędzia programistyczne zaczynają ją wykorzystywać.
To rozproszony system kontroli wersji. Dzięki temu mamy własny, niezależny obszar podobny do pnia. Mogę pracować we własnym obszarze i zapraszać do bardzo łatwego przeglądania zestawów zmian. Mogę wycofać się w swoim własnym miejscu, nie psując centralnego repozytorium. Mogę zatwierdzać, rozgałęziać i robić wszystko, co możesz zrobić z SVN lokalnie. Naprawdę lubię mieć tę kontrolę.
Dzięki SVN potrzebujesz dostępu do swojego repozytorium, aby dokonać zatwierdzenia. Co jeśli jesteś w drodze lub w kawiarni bez internetu? Niedobrze.
Oczywiście, SVN jest znacznie prostszy do nauczenia się, ale myślę, że zalety rozproszonej kontroli źródła w dużej mierze przeważają nad tym, że ma małą krzywą uczenia się.
Podoba mi się również, że lepiej jest łączyć się.
Główną wadą GIT jest to, że przechowuje on całą historię lokalnie. (Tak, możesz to zrobić, aby to zmniejszyć, ale jest to zachowanie domyślne). W przypadku plików źródłowych nie stanowi to żadnego problemu, ale jeśli masz duży projekt z gigabajtami danych zasobów, szybko staje się to problemem. Z mojego obecnego doświadczenia polecam GIT tylko w przypadku repozytoriów mniejszych lub tylko źródłowych.
Jeśli nadal jesteś ciekawy GIT, sprawdź http://thkoch2001.github.io/whygitisbetter/, aby uzyskać dobre informacje / dane. Sprawdź także patrz https://git.wiki.kernel.org/index.php/GitSvnComparsion
źródło
Bystry
Kluczowe cechy:
Jeśli chodzi o użycie plików nietekstowych, ostatnie wersje Mercurial (> = 2.0) domyślnie zapewniają rozszerzenie dużego pliku :
Istnieją inne rozszerzenia zapewniające podobne rozwiązania, takie jak rozszerzenie bigfiles, które pozwala przechowywać twoje zasoby w tym samym repozytorium Mercurial, ale pobiera tylko potrzebne pliki binarne, gdy ich potrzebujesz.
Nie znam żadnych problemów dotyczących dużych projektów poza tymi związanymi z posiadaniem dużych plików binarnych. Projekt Python jest dużym projektem i wykorzystuje Mercurial .
Joel Spolsky napisał mini-poradnik na temat używania Mercurial w Subversion Re-education
źródło
svn:needs-lock
, a ponieważ nie ma też sposobu, aby powiedzieć, kto lokalnie pracuje nad tym , jakie pliki , wróciłeś do przekazywania miski wokół zespołu, dosłownie (nie możesz edytować bez miska na biurku). Rozszerzenie BigFiles, czy nie, ten VCS jest bezużyteczny dla plików binarnych bez praktycznego rozwiązania tego.Z konieczności
Perforce (komercyjny / zamknięty, scentralizowany) jest standardem branżowym z wielu powodów.
To powiedziawszy, boleśnie oczywiste jest prawie codziennie, że Perforce nie uważa, że ich pozycja w branży jest zagrożona. Ich narzędzia wizualne, w tym P4V i P4SCC (zintegrowane z Visual Studio) są powolne i zawierają błędy, przy czym ten ostatni znany jest z tego, że zamraża Visual Studio, aby z niego korzystać. AnkhSVN wyprzedza Perforce o mile.
Komentarz Xana: Warto jednak zauważyć, że ich narzędzie do scalania, P4Merge (używane do różnicowania i łączenia), jest doskonałe i znacznie lepsze niż narzędzia Tortoise Merge. Zaskakujące jest to, że ten komponent jest dostępny bezpłatnie jako część pakietu narzędzi wizualnych P4.
Komentarz by slicedlime: Kolejną wadą Perforce jest to, że rozgałęzienie w nim może być ogromnym bólem, szczególnie jeśli masz duże drzewa. Prawie każdy inny vcs jest lepszy w rozgałęzianiu i scalaniu. Jest to zwykle niewielka cena za powyższe korzyści.
Komentarz roe: Perforce jest bardzo rozmowny. Bez zaangażowanego serwera niewiele się dzieje. Przede wszystkim potrzebujesz serwera, aby móc otwierać pliki do edycji, co oznacza, że musisz przeskoczyć kilka obręczy, jeśli zamierzasz przerwać połączenie z serwerem.
Komentarz jrista: Jako codzienny użytkownik Perforce od ponad dwóch lat, z rozbudowanym zespołem ds. Rozwoju i inżynierii jakości, liczącym ponad 100 osób, dobrze się z tym zapoznałem. Chociaż jest to przyzwoity system kontroli źródła, ma jednak swoje wady, które osoby oceniające systemy SCC powinny mieć świadomość:
źródło
Obalenie
Open-source, scentralizowane
Pliki Blendera - nie jestem do końca pewien, czy pliki .blend są binarne (wyglądają tak), ale nie miałem problemów z dodaniem ich do Subversion. Po przeprowadzeniu kilku eksperymentów zwiększenie rozmiaru zmienionych plików wydaje się nominalne, więc nie jest to po prostu kopiowanie w całym pliku.
Duże projekty - Działa, choć może być dziwaczny. Zdecydowanie jest w stanie obsłużyć repozytoria o wielkości co najmniej 5,5 GB (całkowity rozmiar katalogu repozytorium na serwerze; głównie zasoby binarne).
Zduplikowane dane na kliencie - Subversion przechowuje kopię każdego pliku w przestrzeni roboczej użytkownika jako nieskazitelną kopię. Zaletą tego jest to, że możesz zrobić różnicę lub przywrócić bez powrotu do serwera. Wadą jest to, że 10 gigabajtów plików roboczych zajmuje 20 gigabajtów miejsca na dysku.
Lista ignorowanych jest właściwością katalogu (prosta z GUI, denerwująca w wierszu poleceń).
Subversion pozwala blokować pliki / zasoby - co jest naprawdę pomocne, jeśli wielu artystów i projektantów pracuje nad tymi samymi plikami.
Zewnętrzne to świetny sposób na obsługę kodu współdzielonego (np. Biblioteki lub bazy) między projektami.
źródło
AlienBrain
Od Avid :
Mam żadnego doświadczenia z AlienBrain i tylko słyszałem o nim z książki Gra Coding Kompletna Mike McShaffry. Wydaje się jednak, że wysoko o tym myśli:
Oczywiście opisuje to również jako:
źródło
Team Foundation Server
od Microsoft
Użyłem TFS intensywnie w projektach symulatorów MILSPEC i jest całkiem niezły. Prawdopodobnie nie jest najlepszy, jeśli korzystasz z komputera Mac, chociaż w dzisiejszych czasach istnieje wtyczka Eclipse. Wersja hostowana w chmurze obsługuje repozytoria git dla zaplecza kontroli źródła.
Jest bezpłatny dla maksymalnie pięciu użytkowników w Visual Studio Online (pozwala na zamknięte źródło; brak ograniczeń wielkości repozytorium), gdzie jest przechowywany w chmurze. Jeśli chcesz go hostować lokalnie, może być drogo.
Najbardziej podoba mi się funkcja zarządzania inżynierią oprogramowania oraz fakt, że całkiem dobrze radzi sobie z dużymi plikami i plikami binarnymi.
źródło