Es sind zahlreiche Versionskontrollsysteme verfügbar, darunter Open-Source-Systeme wie Subversion , Git und Mercurial sowie kommerzielle Systeme wie Perforce .
Wie gut unterstützen sie den Prozess der Spieleentwicklung? Was sind die Probleme bei der Verwendung von VCS in Bezug auf Nicht-Textdateien (Binärdateien), große Projekte usw.? Welche Lösungen gibt es für diese Probleme?
Versuchen wir es zur Organisation der Antworten auf Paketbasis. Aktualisieren Sie jedes Paket / jede Antwort mit Ihren Ergebnissen.
Bitte geben Sie in Ihrer Antwort auch einige kurze Details an, ob Ihr VCS kostenlos oder kommerziell, verteilt oder zentralisiert ist usw.
Update : Einen schönen Artikel gefunden, in dem zwei der folgenden VCS verglichen wurden - anscheinend ist Git MacGyver und Mercurial ist Bond . Nun, ich bin froh, dass das geklärt ist ... Und der Autor hat am Ende ein nettes Zitat:
Es ist in Ordnung, für diejenigen zu werben, die noch nicht zu einem verteilten VCS gewechselt sind, aber zu versuchen, einen Git-Benutzer zu Mercurial (oder umgekehrt) zu konvertieren, ist eine Verschwendung von Zeit und Energie für alle.
Zumal Git und Mercurials wirklicher Feind Subversion ist . Dang, es ist eine Code-Eat-Code- Welt da draußen im FOSS-Land ...
quelle
Antworten:
Git
Vor kurzem war ich auf dem Git- Bandwagon (ich habe SVN und Mercurial verwendet). Bisher gefällt mir sehr, was ich mit Git bekomme. Das Einrichten ist alles andere als mühsam, und immer mehr Entwicklungstools setzen es ein.
Es ist ein verteiltes Versionskontrollsystem. Dies ermöglicht es uns, einen eigenen unabhängigen kofferraumähnlichen Bereich zu haben. Ich kann in meinem eigenen Bereich arbeiten und Sie ganz einfach dazu einladen, Änderungssets anzusehen. Ich kann in meinem eigenen Bereich einen Rollback durchführen, ohne das zentrale Repo zu beschädigen. Ich kann alles festschreiben, verzweigen und tun, was Sie mit SVN vor Ort tun können. Ich mag es wirklich, diese Kontrolle zu haben.
Bei SVN benötigen Sie Zugriff auf Ihr Repo, um ein Commit durchführen zu können. Was ist, wenn Sie unterwegs oder in einem Café ohne Internet sind? Nicht gut.
Sicher, SVN ist viel einfacher zu lernen, aber ich denke, die Vorteile der verteilten Quellcodeverwaltung überwiegen bei weitem die Tatsache, dass es eine kleine Lernkurve hat.
Ich finde es auch klüger, wenn es um das Zusammenführen geht.
Ein großer Nachteil von GIT ist, dass es die gesamte Geschichte lokal speichert. (Ja, Sie können chirurgische Eingriffe durchführen, um dies zu verhindern, aber dies ist das Standardverhalten.) Es ist überhaupt kein Problem für Quelldateien, aber wenn Sie ein großes Projekt mit Gigabyte an Asset-Daten haben, wird es schnell zu einem Problem. Nach meiner derzeitigen Erfahrung würde ich GIT nur für kleinere oder reine Quellrepos empfehlen.
Wenn Sie immer noch neugierig auf GIT sind, lesen Sie http://thkoch2001.github.io/whygitisbetter/, um einige gute Informationen / Messdaten zu erhalten. Überprüfen Sie auch https://git.wiki.kernel.org/index.php/GitSvnComparsion
quelle
Mercurial
Hauptmerkmale:
In Bezug auf die Verwendung von Nicht-Textdateien bieten die letzten Versionen von Mercurial (> = 2.0) standardmäßig die Largefile-Erweiterung :
Es gibt andere Erweiterungen, die ähnliche Lösungen anbieten, wie die Erweiterung bigfiles, mit der Sie Ihre Assets im selben Mercurial- Repository speichern können, aber nur dann die benötigten Binärdateien abrufen können, wenn Sie sie benötigen.
Ich kenne keine Probleme in Bezug auf große Projekte, die nicht mit großen Binärdateien zusammenhängen. Das Python-Projekt ist ein großes Projekt und verwendet Mercurial .
Joel Spolsky hat ein Mini-Tutorial zur Verwendung von Mercurial bei Subversion Re-education geschrieben
quelle
svn:needs-lock
, und da es auch keine Möglichkeit gibt, festzustellen, wer vor Ort an welchen Dateien arbeitet , können Sie buchstäblich eine Schüssel im Team herumreichen (ohne die können Sie keine Änderungen vornehmen) Schüssel auf Ihrem Schreibtisch). BigFiles-Erweiterung oder nicht, dieses VCS ist für Binärdateien ohne eine praktische Lösung für diese unbrauchbar.Perforce
Perforce (kommerziell / Closed-Source, zentralisiert) ist aus mehreren Gründen der Industriestandard.
Trotzdem ist es fast täglich schmerzlich offensichtlich, dass Perforce nicht den Eindruck hat, dass ihre Position in der Branche gefährdet ist. Ihre visuellen Tools, einschließlich P4V und P4SCC (in Visual Studio integrierbar), sind langsam und fehlerhaft, wobei letztere bekanntermaßen Visual Studio zum Vergnügen einfrieren. AnkhSVN ist Perforce meilenweit voraus.
Kommentar von xan: Es ist jedoch erwähnenswert, dass das Merge-Tool P4Merge (das zum Vergleichen und Zusammenführen verwendet wird) hervorragend und solchen wie Tortoise Merge weit überlegen ist. Überraschenderweise ist diese Komponente als Teil des P4 Visual Tools-Pakets kostenlos verfügbar.
Kommentar von slicedlime: Ein weiterer Nachteil von Perforce ist, dass das Verzweigen in der Regel sehr schmerzhaft ist, insbesondere wenn Sie große Bäume haben. Fast jeder andere VCS kann besser verzweigen und verschmelzen. Dies ist jedoch normalerweise ein geringer Preis für die oben genannten Vorteile.
Kommentar von roe: Perforce ist extrem gesprächig. Ohne den Server ist nicht viel los. Vor allem benötigen Sie den Server, um Open-for-Edit ausführen zu können. Wenn Sie also die Verbindung zum Server unterbrechen möchten, müssen Sie einige Schritte überspringen.
Kommentar von jrista: Als täglicher Benutzer von Perforce seit über zwei Jahren mit einem erweiterten Entwicklungs- und Qualitätsteam von weit über 100 Mitarbeitern bin ich damit vertraut. Obwohl es sich um ein anständiges Versionsverwaltungssystem handelt, hat es seine Nachteile, dass diejenigen, die SCC-Systeme bewerten, Folgendes berücksichtigen sollten:
quelle
Subversion
Open Source, zentralisiert
Blender-Dateien - Ich bin mir nicht ganz sicher, ob .blend-Dateien binär sind (sie sehen so aus), aber ich hatte keine Probleme, sie zu Subversion hinzuzufügen. Nach einigen Experimenten wird die Dateigröße für geänderte Dateien nur geringfügig erhöht, sodass nicht nur die gesamte Datei kopiert wird.
Große Projekte - Es funktioniert, obwohl es schrullig werden kann. Es ist definitiv in der Lage , Repositorys mit mindestens 5,5 GB zu verwalten (Gesamtgröße des Repository-Verzeichnisses auf dem Server; meistens binäre Assets).
Duplizierte Daten auf dem Client - Subversion speichert eine Kopie jeder Datei im Arbeitsbereich des Benutzers als unverfälschte Kopie. Dies hat den Vorteil, dass Sie einen Vergleich durchführen oder zurücksetzen können, ohne zum Server zurückzukehren. Der Nachteil ist, dass Ihre 10 GB Arbeitsdateien 20 GB Speicherplatz beanspruchen.
Die Ignorierliste ist eine Eigenschaft eines Verzeichnisses (einfach mit einer GUI, nervig in der Befehlszeile).
Subversion ermöglicht das Sperren von Dateien / Assets - was sehr hilfreich ist, wenn mehrere Künstler und Designer an denselben Dateien arbeiten.
Externe Funktionen eignen sich hervorragend für den Umgang mit gemeinsam genutztem Code (z. B. Bibliothek oder Basiscode) zwischen Projekten.
quelle
AlienBrain
Von Avid :
Ich habe keine Erfahrung mit AlienBrain und habe nur aus dem Buch Game Coding Complete von Mike McShaffry davon gehört. Er scheint jedoch hoch darüber zu denken:
Natürlich beschreibt er es auch als:
quelle
Team Foundation Server
von Microsoft
Ich habe TFS ausgiebig in MILSPEC-Simulatorprojekten verwendet und es ist ziemlich gut. Wahrscheinlich nicht die Beste, wenn Sie einen Mac haben, obwohl es heutzutage ein Eclipse-Plugin gibt. Die von der Cloud gehostete Version unterstützt Git-Repositorys für das Back-End der Quellcodeverwaltung.
Es ist für bis zu fünf Benutzer in Visual Studio Online kostenlos (erlaubt Closed Source; keine Begrenzung der Repository-Größe), wo es in der Cloud gehostet wird. Wenn Sie es lokal hosten möchten, kann es teuer sein.
Die Dinge, die mir am besten gefallen, sind die Verwaltungsfunktionen für das Software-Engineering und die Tatsache, dass große Dateien und Binärdateien recht zufriedenstellend verarbeitet werden.
quelle