2010-04-28 10 views
17

Ich frage mich, ob die Option merge = union in .gitattributes für .pbxproj-Dateien sinnvoll ist.Sollte ich .pbxproj Dateien mit Git verschmelzen mit merge = Union?

Die manpage Staaten für diese Option:

Run 3-Wege-Dateiebene für Text-Dateien zusammenführen, sondern Linien von beiden Versionen nehmen, statt Marker Konflikt zu verlassen. Dies neigt dazu, die hinzugefügten Zeilen in der resultierenden Datei in zufälliger Reihenfolge zu belassen, und der Benutzer sollte das Ergebnis verifizieren.

Normalerweise sollte dies für den 90% Fall des Hinzufügens von Dateien zu dem Projekt in Ordnung sein. Hat jemand Erfahrung damit?

+0

Hey Ortwin, hast du es am Ende versucht und wenn ja, was ist deine Erfahrung? – Dick

+0

Dick, ich ging zum manuellen Zusammenführen, aber in 90% der Fälle füge ich beide Seiten hinzu. Mit einem grafischen Git-Client wie Tower ist dieses manuelle Zusammenführen keine große Sache, also funktioniert das großartig für mich. –

Antwort

17

keine direkte Erfahrung, aber:

  • Diese SO question wirklich wieder .pbxproj Dateien Ratschläge zu verschmelzen.

Die pbxproj Datei ist nicht wirklich menschlich mergable.
Während es einfacher ASCII-Text ist, ist es eine Form von JSON. Im Wesentlichen möchten Sie es als eine Binärdatei behandeln.

(also ein gitignore solution)

Eigentlich fügt Peter Hosey im Kommentar:

Es ist ein property list, nicht JSON. Gleiche Ideen, andere Syntax.

Die Wahrheit ist, dass es viel mehr schädliche Verschmelzung dieser .pbxproj-Datei nicht zulassen, als es hilfreich ist.
Die .pbxproj Datei ist einfach JSON (ähnlich wie XML). Aus Erfahrung ist nur der EINZIGE Zusammenführungskonflikt, den Sie jemals erhalten haben, wenn zwei Personen Dateien gleichzeitig hinzugefügt haben. Die Lösung in 99% der Zusammenführungskonfliktfälle besteht darin, beide Seiten der Zusammenführung beizubehalten.

So ein Merge ‚Union‘ (mit einem gitattributes merge directive) macht Sinn, aber einigen Test tun, um zu sehen, ob es die gleiche Sache als das Skript in der letzten Frage erwähnt hat.

+1

Es ist eine Eigenschaftsliste, nicht JSON. Gleiche Ideen, andere Syntax. http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/PropertyLists/ –

+0

@Peter: Danke für die Korrektur. Ich habe die Antwort aktualisiert. – VonC

+0

Ich bin gerade auf diese Frage und Antwort gestoßen. Es scheint sicher eine gute Idee zu sein, ich kann mir nicht vorstellen, wo zufällig eingestreute Einträge sich mit irgendetwas vermischen würden. Hat jemand Erfahrung damit? –

7

ich in letzter Zeit mit einem großen Team gearbeitet haben und versucht *.pbxproj merge=union, aber letztlich es entfernen musste.

Das Problem war, dass Zahnspangen regelmäßig fehl am Platze wurden, was die Dateien unlesbar machte. Es ist wahr, dass das meiste funktioniert - aber vielleicht 1 von 4 Mal fehlschlägt.

Wir sind zurück zu für jetzt verwenden. Dies scheint die beste Lösung zu sein, die für uns praktikabel ist.

+0

Ich hatte die gleiche Erfahrung wie Corey. Für uns ist es passiert, als zwei Entwickler eine Gruppe in verschiedenen Zweigen hinzugefügt haben. Die Projektdatei behandelt die Gruppensortierung in einer ungeraden Art und Weise, die merge = union funktioniert in diesem Fall nicht korrekt. Für uns ist der Nachteil, wenn dies versagt die Vorteile überwiegen, wenn es gelingt. Sobald Sie daran gewöhnt sind, die Änderungen auf der linken und rechten Seite in der Projektdatei zusammenzuführen, ist das nicht allzu schlimm. – hustoj2