2010-06-30 4 views
7

Wenn wir Core Data Model-Dateien mit git Versionskontrolle unterstellen, haben wir immer eine schreckliche Zeit Änderungen zu verschmelzen - der einzige sichere Weg, um zu vermeiden, dass Änderungen von Hand zusammengeführt werden müssen, ist die Kommunikation zwischen dem Team zu blockieren Aus dem Zugriff auf das Modell, während eine Person ihre notwendigen Änderungen und Pushs, dann die nächste Person, etc. Sicher gibt es einen besseren Weg, damit umzugehen, aber als Git Novize keine offensichtliche Lösung in den Sinn kommt. Irgendwelche Vorschläge?Wie kann ich Versionskontroll- und Core Data-Modelle sinnvoll angehen?

Antwort

3

Soweit ich gesehen habe, gibt es zu dieser Zeit keinen besseren Weg, da das Modell in einem Format gespeichert wird, das nicht zum Zusammenführen geeignet ist. Normalerweise mache ich genau das, was Sie tun, lassen Sie jeweils eine Person an dem Modell arbeiten, um Kollisionen zu vermeiden.

+0

Danke Marcus. Wir müssen nur disziplinierter mit unserer Kommunikation sein! –

1

Sobald Sie mit der Verwaltung von Migrationszuordnungsmodellen beginnen, können Sie zumindest Datenmodelle vergleichen und sich die Änderungen ansehen. Die gleiche Vergleichsfunktionalität wäre auch bei SCM-Revisionen von Datenmodellen sehr hilfreich und würde das Leben erheblich vereinfachen.

+0

Danke Martin - wir sehen uns das an. –

3

Während es keine Möglichkeit gibt, das Problem der Kerndatenmodelle zu umgehen, habe ich einen git diff-Treiber für Kerndatenmodelldateien erstellt, der die Dinge ein wenig erleichtern sollte (siehe README für Anweisungen zum Einrichten).

https://github.com/chaitanyagupta/XCDataModelPrinter

Sobald Sie XCDataModelPrinter als git-diff-Treiber eingerichtet haben, können Sie ein paar Dinge tun, um etwas zu machen Verschmelzung leichter:

Bewertung Änderungen an dem Modell in unserer Branche

Bewertung Änderungen an dem Modell in den anderen Zweig gemacht

git diff my-branch...other-branch -- /path/to/model 

Nachdem Sie die Änderungen überprüft haben, lassen Sie uns versuchen, die Zusammenführung auf unserer Branche zu tun:

git merge other-branch 

Wenn git didn‘ t einen Merge-Konflikt melden und dann die Merge-Ergebnisse überprüfen (in diesem Fall wird ein kombiniertes Diff angezeigt)

Wenn th e merge führte zu einem Konflikt, es gibt einen von zwei Pfaden, die Sie nehmen können: Überprüfen Sie die Modelldatei in Ihrem eigenen Zweig und fügen Sie manuell Änderungen an dem anderen Zweig hinzu oder umgekehrt. Vorausgesetzt, dass Sie den ersten Pfad verwenden mögen:

Check-out-Modell Änderungen in unserer eigenen Niederlassung:

git checkout --ours -- /path/to/model 

den Befehl diff Mit über die Änderungen in dem anderen Zweig gemacht, um zu sehen, manuell diese Änderungen hinzufügen und Bewertung:

git diff -- /path/to/model 

Sobald Sie zufrieden sind, nur git-add die Modelldatei so seine nicht mehr als unmerged markiert und begehen:

git add /path/to/model 
git commit 
Verwandte Themen