16 Stimmen

Können Künstler in einer Open-Source-Umgebung realistisch mit (verteiltem) Versionskontrolle umgehen?

Hey, ich arbeite in der Projektmanagementabteilung eines Open-Source-Spiels. Im Moment verwenden wir SVN zur Versionskontrolle und speichern Code und Assets im selben Repository. Die Quellversionen der Assets (Modelle, Texturen) befinden sich in einem separaten Media-Zweig, während die gerenderten Versionen der Assets (wir arbeiten an einem isometrischen 2D-Spiel, daher verwenden wir tatsächlich gerenderte 2D-Bilder der 3D-Modelle im Spiel) nahe am Code liegen, da sie an Ort und Stelle sein müssen, um das Spiel auszuführen.

Unsere Künstler hatten Schwierigkeiten, mit der Verwendung von Subversion zu beginnen und das Konzept der Versionskontrolle im Allgemeinen zu verstehen. Im Moment besteht das Projekt größtenteils aus Programmierern, und wir erwägen, von SVN auf verteilte Versionskontrolle umzusteigen, um das Arbeiten mit Zweigen (und dem damit verbundenen Merging-Prozess) und das Einreichen von Patches zu erleichtern. Wir haben noch keine Entscheidung darüber getroffen, welches DVCS wir verwenden werden, aber höchstwahrscheinlich werden wir entweder Mercurial oder Git verwenden.

Während verteilte Versionskontrolle großartig für Entwickler mit technischem Hintergrund ist, erscheint sie möglicherweise übermäßig komplex und kompliziert für Künstler und andere möglicherweise weniger technikaffine Entwickler.

Also bin ich auf der Suche nach allen Arten von Ratschlägen, wie wir den Versionskontroll-Workflow für Künstler vereinfachen könnten. Beachten Sie, dass die Verwendung von etwas wie Perforce, unabhängig davon, wie gut es für den Job geeignet sein könnte, keine Option für ein kostenloses Open-Source-Projekt ist. Daher bin ich eher auf der Suche nach Ratschlägen, Tutorials, Projekttools, die es für Künstler leicht machen, verteilte Versionskontrolle zu verstehen, insbesondere Hg und/oder Git.

Ist es überhaupt sinnvoll, diesen Weg einzuschlagen und zu versuchen, die Künstler dazu zu bringen, verteilte Versionskontrolle zu verwenden? Wir könnten weiterhin die Quellversionen der Assets (Texturen, Modelle) in unserem bestehenden SVN-Repository speichern. Aber wir müssten immer noch eine Lösung für die Assets finden, die benötigt werden, um das Spiel auszuführen, da sie nahe am Code in der Versionskontrolle liegen sollten.

Es gibt eine Reihe großartiger DVCS-Anleitungen, z. B. das Hginit-Tutorial. Allerdings waren die von mir gefundenen alle für Programmierer geschrieben. Es ist großartig, dass sie jetzt problemlos lokal committen, das volle Potenzial von Zweigen nutzen und ihre Änderungen ohne allzu großen Aufwand zurückführen können. Dies könnte jedoch für Künstler nicht vorteilhaft, sondern eher übermäßig komplex und beängstigend sein. Kennen Sie zufällig ein DVCS-Tutorial, das für Künstler als primäre Zielgruppe geschrieben wurde?

Wir verwenden auch Trac zu Projektmanagementzwecken, also wenn Sie einen Trac-Plugin kennen, der künstlerfreundlich ist, lassen Sie es mich bitte wissen :-)

12voto

Gilbert Le Blanc Punkte 47973

Ich bin mir nicht einmal sicher, ob Programmierer wirklich mit verteilter Versionskontrolle umgehen können. Als Beweis führe ich die Anzahl der Fragen zur verteilten Versionskontrolle auf Stack Overflow an.

Mein Vorschlag wäre, den Künstlern zwei Checklisten oder Spickzettel zu geben. Einen zum Commiten von Kunstwerken und einen zum Abrufen von Kunstwerken. Diese Spickzettel sollten spezifisch für Ihre Arbeitsumgebung sein.

Wenn ein Künstler das "Was" der Quellkontrolle verstehen möchte, kann einer der Programmierer die Details erklären.

Meine Erfahrung zeigt, dass die meisten Leute ihre Arbeit erledigen wollen und sich nicht für das "Was" interessieren. Sie kümmern sich nur um das "Wie".

7voto

Martin Geisler Punkte 71257

Mit Mercurial haben Sie die Möglichkeit, den Künstlern weiterhin die Nutzung von Subversion zu ermöglichen, während die Entwickler auf Mercurial umsteigen und somit die Vorteile der verteilten Versionskontrolle genießen können.

Der Trick besteht darin, ein Subversion-Unterrepository in Mercurial zu verwenden. Mercurial ermöglicht das Einbetten von Repositories: Mercurial 1.7 unterstützt Mercurial- und Subversion-Unterrepositorys, Mercurial 1.8 wird Git-Unterrepositorys unterstützen.

Sie steuern ein Unterrepo über eine Datei namens .hgsub. In Ihrem Fall würden Sie etwas wie dies zur Datei hinzufügen:

graphics/rendered = \[svn\]http://svn.example.org/graphics/rendered

Dies weist Mercurial an, ein svn checkout von http://svn.example.org/graphics/rendered zu machen und das Checkout als graphics/rendered in Ihrem Mercurial-Arbeitskopie zu speichern. Mit anderen Worten, das Format der Datei .hgsub ist

mount-point = [type]source-URL

Sie machen das erste Checkout selbst, fügen die .hgsub-Datei hinzu und machen einen Mercurial-Commit. Zu diesem Zeitpunkt merkt sich Mercurial die genaue Subversion-Revision, die in Ihrem Unterrepo ausgecheckt ist. Diese Revisionsnummer wird in .hgsubstate gespeichert, welches eine zusätzliche von Mercurial verfolgte Datei ist.

Wenn ein anderer Entwickler ein Klon des Mercurial-Repositorys macht, wird Mercurial die Dateien .hgsub und .hgsubstate bemerken und sie verwenden, um das von Ihnen committed Subversion-Checkout neu zu erstellen.

Die Vorteile dieser Lösung sind:

  1. die Künstler können weiterhin mit Subversion arbeiten. Hier vereinfache ich die Dinge etwas, indem ich davon ausgehe, dass sie mit ihren Grafikdateien isoliert arbeiten können, ohne das äußere Mercurial-Repository zu klonen. Selbst wenn das nicht zutrifft, können sie den Großteil ihrer Arbeit weiterhin mit Subversion machen und nur gelegentlich hg pull --update verwenden, um die neuesten Mercurial-Änderungen zu erhalten.

  2. Entwickler müssen nicht alle Revisionen aller Grafikdateien herunterladen. Dies ist normalerweise ein Hindernis für (jedes) verteilte Versionskontrollsystem, wenn es um große Binärdateien geht.

    Das Problem ist, dass bei zentralisierter Versionskontrolle nur der Server alle Revisionen einer bestimmten Datei speichern muss, aber bei verteilter Versionskontrolle jeder Entwickler jede Version speichert.

    Die Externalisierung der Binärdateien in ein Subversion-Unterrepo umgeht dieses Problem.

Mercurial dreht sich alles um Versionskontrolle und darum, Ihnen konsistente Snapshots des Projekts zu geben. Mercurial wird daher nur Dinge auschecken, die explizit committed wurden. Das bedeutet, dass die Entwickler regelmäßig neue Subversion-Revisionen einholen müssen:

$ cd graphics/rendered
$ svn update
$ cd ../..
$ # testen der neuen Grafiken!
$ hg commit -m 'Grafiken aktualisiert'

Der Mercurial-Commit commitet die neue Subversion-Revisionnummer in der Datei .hgsubstate -- Mercurial kümmert sich darum, die Nummer in die Datei einzufügen, die Entwickler müssen sie nur committen. Auf diese Weise wird jedes Mercurial-Changeset über die Datei .hgsubstate auf eine bestimmte Subversion-Revision verweisen, und so können Sie jeden vergangenen Zustand (bestehend aus Quellcode und Grafiken) genau nachbilden.

5voto

pyfunc Punkte 63257

Die folgenden sind eine gute visuelle Einführung in Versionskontrolle und Mercurial.

Versuchen Sie zu sehen, ob es dabei hilft, es einfacher zu verstehen. Ich würde es sehr schwer finden, etwas zu nutzen, das ich mir nicht vorstellen kann.

Hier sind also einige gute visuelle Einführungen:

Git bietet ein detaillierteres Modell, das von vielen Programmierern gemocht wird. Mercurial bietet eine sauberere und kleinere Untermenge von Konzepten, mit denen umgegangen werden muss. Ich glaube, dass Mercurial für Ihren Zweck besser geeignet sein wird.

1voto

xayeko Punkte 11

Ich bin vielleicht etwas spät zur Party gekommen (und hoffentlich nicht off-topic), aber in Ihrem Original-Post haben Sie erwähnt:

"Denken Sie daran, dass die Verwendung von etwas wie Perforce, unabhängig davon, wie gut es für den Job geeignet sein mag, keine Option für ein kostenloses Open-Source-Projekt ist."

Wenn Sie wirklich an Perforce interessiert sind, möchten Sie vielleicht wissen:

"Wenn Sie Software entwickeln, die ausschließlich unter einer Open-Source-Lizenz lizenziert oder anderweitig verteilt wird, können Sie möglicherweise eine Perforce-Lizenz kostenlos erhalten. Dies beinhaltet Upgrades, aber keinen technischen Support." -- http://www.perforce.com/perforce/price.html

1voto

Stephen Foged Punkte 11

Wir haben Künstler, die an Spielen mit GIT arbeiten. Für uns ist der SmartGIT-Client unerlässlich.

Es gibt ihn auch in SVN-Version.

Link http://www.syntevo.com/smartgit/index.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X