Best Practices für die Versionskontrolle in Unity?

11

Ich bin etwas verwirrt darüber, wie die Versionskontrolle mit Unity verwendet wird, insbesondere mit Objekten wie Szenen oder Fertighäusern, die nicht nur Code sind.

Wir hatten kürzlich ein Problem, als mein Kollege und ich an verschiedenen Teilen derselben Szene arbeiteten. was zu Konflikten führte, die sich in Hülle und Fülle verzweigten und verschmolzen.

Am Ende wurde meine Revision sowieso durch seine Änderungen überschrieben.

Der einzige Weg, den ich im Moment sehe, ist, dass wir abwechselnd an denselben Objekten arbeiten, aber es scheint nicht sehr praktisch zu sein, zumal die gesamte Arbeit, die wir derzeit machen, in den Szenen stattfindet.

Was machen Menschen normalerweise in diesen Situationen?

(Wir verwenden Mercurial, BitBucket und SourceTree.)

Kaworu
quelle
1
Ähm. Möchten Sie kommentieren, warum ich weniger als 5 Minuten nach der Frage herabgestimmt wurde? Ich kann die Frage nicht verbessern, wenn ich nicht weiß, was daran falsch ist.
Kaworu
2
Ich bin auch darauf gestoßen. Sie können die Skripte in kein Problem setzen, aber Szenen usw. scheinen schwieriger
Ewan
1
Sind diese Szenendateien Textdateien, die schwer zusammenzuführen sind, oder sind es Binärdateien, die mehr oder weniger unmöglich sind? Wenn es sich um Binärdateien handelt, scheint Unity Zusammenführungs- (und möglicherweise Diff-?) Tools dafür bereitzustellen .
Nathan Cooper
@ NathanCooper Soweit ich das beurteilen kann, handelt es sich um Binärdateien. Zumindest verhalten sie sich wie Binärdateien, und wenn ich sie in einem Texteditor öffne, habe ich die gleiche Menge an Hokuspokus wie jede andere kompilierte Datei. Ich wusste nichts über Smart Merge. Vielen Dank!
Kaworu

Antworten:

6

Sie können die folgende Lösung ausprobieren, wenn Sie GitHub verwenden.

  1. Öffnen Sie in Unity Bearbeiten-> Projekteinstellungen -> Editor und dann im Inspektor der Projekteinstellungen.
  2. Ändern Sie "Versionskontrollmodus" in "Sichtbare Metadateien".
  3. Ändern Sie "Asset-Serialisierungsmodus" in "Text erzwingen".

Das funktioniert gut für mich.

KamikyIT
quelle
3

Die meisten Versionskontrollsysteme (VCS) sind für Text ausgelegt. Sie verfügen normalerweise über sehr leistungsstarke und praktische Funktionen zum Vergleichen ( diff) und Zusammenführen von Quellcode, und einige Tools können sogar automatisch Änderungen zusammenführen (und erraten, wie Änderungen zusammengeführt werden sollen und zu welchem ​​Zeitpunkt der Entwickler aufgefordert werden sollte, a) manuelle Zusammenführung).

Es wäre großartig, diffBinärdateien aus den jeweiligen Anwendungen, die diese Dateien verwenden, besser zu unterstützen und zusammenzuführen. Microsoft Word ermöglicht es beispielsweise, zwei Dokumente zu vergleichen, und obwohl es kein praktisches Tool zum Zusammenführen ist, ist es dennoch besser als nichts und hat mir mehrfach Stunden gespart. Leider wird die Zusammenführungsfunktion normalerweise entweder in Softwareprodukten überwacht oder ist schwer zu implementieren (wie visualisieren Sie diffeine 3D-Szene?)

Wenn es um Binärdateien geht, erhalten Sie von VCS wenig Hilfe. Sie können nicht nur aufeinanderfolgende Änderungen nicht effizient speichern, sondern können Ihnen auch nicht dabei helfen, die Änderungen zusammenzuführen.

Vor zwei Jahren stellte ich eine sehr ähnliche Frage zur Verwendung der Versionskontrolle in Videobearbeitungssoftware . Ich glaube, dass die Antworten, die auf meine Frage gegeben wurden, auch hier teilweise zutreffen. Der einzige (aber wichtige) Unterschied besteht darin, dass meine Frage große Dateien betraf, während in Ihrem Fall Binärdateien wahrscheinlich relativ klein sind.

Der Ansatz, den Sie gefunden haben, nämlich „abwechselnd an denselben Objekten zu arbeiten“, ist der gute. Wenn Sie nicht zusammenführen können, arbeiten Sie nicht parallel an denselben Dingen. Wenn Sie im selben Büro arbeiten, kann dies einfach sein. Wenn nicht, unterstützen die meisten Versionskontrollsysteme ( einschließlich des von Ihnen verwendeten ; dies wird hier auch im Zusammenhang mit BitBucket erläutert ) das Sperren , bei dem der Benutzer eines VCS über das System anzeigt, dass er an einem bestimmten Dateirechte arbeitet jetzt; Andere Benutzer können die neueste Version der Datei laden, es wird jedoch nicht erwartet, dass sie diese ändern.

Arseni Mourzenko
quelle