Jump to content
Unity Insider Forum

Versionierung von Codeänderungen in generierten Projekten


Ratze

Recommended Posts

Hallo,

 

wir betreiben Unity3d in Kombination mit Git, leider leider lässt es sich nicht immer verhindern die Codebase des Unityprojektes komplett Plattformunabhängig zu halten. So müssen z.B. manuelle Änderungen am generierten Androidprojekt vorgenommen werden um die ICS auszublenden, oder für die Admobanbindung im iOS müssen spezielle Liraries eingebunden werden.

 

Die Frage ist, wie regelt man, dass die Änderungen beim nächsten Generierungsprozess überschrieben werden.

Weiterhin ist die Frage wie man es so am besten ins Git kriegt. für jede Plattform einen Branch zu erstellen und immer wieder mergen halte ich für sehr mühselig und fehleranfällig.

 

Habt ihr da schon Erfahrungen zu gesammelt, oder übersehe ich da etwas?

 

Danke und viele Grüße

Ratze

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Frage ist, wie regelt man, dass die Änderungen beim nächsten Generierungsprozess überschrieben werden.

Weiterhin ist die Frage wie man es so am besten ins Git kriegt. für jede Plattform einen Branch zu erstellen und immer wieder mergen halte ich für sehr mühselig und fehleranfällig.

 

Habt ihr da schon Erfahrungen zu gesammelt, oder übersehe ich da etwas?

 

Ich nehme an mit Conditional Compilation arbeitet Ihr sowieso schon, oder? Seit Unity 4 kann man auch projektweit bzw. sogar pro Zielplattform eigene Symbole definieren, was für alle Code-Änderungen im Projekt selbst schonmal eine gut tragfähige Lösung ist. Bei Bedarf kann man da mit Editor-Scripting richtig coole Sachen machen (dazu wollte ich sogar mal ein Asset Store Paket bauen, ist aber wegen des Wust an anderen Projekten mit höherer Priorität leider bisher noch nicht fertig :-( ). Soweit wie möglich würde ich versuchen alles im Unity Projekt selbst "unterzubringen", und soweit ich das überblicke bietet Unity da schon Einiges an (ich glaube in 5.0 wird die Art, wie Plugins eingebunden werden noch mal verbessert; das wird uns das Leben dann auch nochmal etwas vereinfachen).

 

Für die generierten Projekte, also das, was partout nicht im Unity Projekt selbst machbar ist, ist es natürlich schwieriger ... mit Git habe ich nicht sooo viel Erfahrung. Was ich aber versuchen würde ist, die Verzeichnisstruktur so aufzusetzen, dass sich alle generierten Projekte mit dem Unity Projekt in einem "Git-Projekt" befinden, d.h. dass das letztlich alles zusammen von Git als ein Projekt gesehen wird. Auf diese Weise lassen sich Änderungen auf allen Ebenen sauber in Changesets zusammenfassen.

 

Es wird dann Dateien geben, die von Unity erzeugt werden und nie angefasst werden - da wäre eine Überlegung, diese aus der Versionsverwaltung rauszunehmen ... ist Geschmacksfrage (ich mag alles in der History, daher würde ich sie drinnen lassen, für den Fall dass sich bei einer neuen Unity-Version diese Dateien ändern). Dann gibt es wahrscheinlich Dateien, die man selbst geändert hat, und die von Unity meistens in Frieden gelassen werden - die sind dann natürlich in Versionsverwaltung, und entweder erkennt Git beim Einchecken, dass sich nix geändert hat (d.h. man nimmt die einfach in die Changesets mit rein und Git schmeisst sie wieder raus, weil sich ja nix geändert hat - TFS macht das beispielsweise so), oder man muss halt manuell "Undo" machen, um sich nicht die Historie aufzublasen.

 

Und schließlich gibt es ggf. Dateien, die man ändert, und die von Unity überschrieben werden. Da ist's dann super, sie in Versionsverwaltung zu haben, weil man vor dem letztendlich Build einfach "Undo" machen kann. Und man kann auch vergleichen, ob Unity nicht vielleicht doch eine wichtige Änderung vorgenommen hat (z.B. bei einem Versionswechsel von Unity).

 

Wie gesagt: Mit Git selbst kenne ich mich nicht so gut aus, daher weiß ich nicht, wie gut man das automatisieren / Git-spezifisch optimieren kann. Aber das müssten die wichtigsten Punkte sein, die man da braucht, unabhängig von der konkreten Versionsverwaltung.

 

Branch mit Merges halte ich für den Anwendungsfall für eher keine gute Idee ... da verstehe ich nicht ganz, welchen Vorteil das haben sollte (dass du das geschrieben hast, hat mich motiviert Conditional Compilation zu erwähnen - weil mir "Branch mit Merges" ein wenig wie ein Workaround für etwas erscheint, was mit Conditional Compilation eleganter geht ... aber vielleicht bin ich da im völlig falschen Film ;-) ).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...