2014-10-28 1 views
6

Jedes Mal, wenn ich andere Teammitglied iOS objc Projekt verschmelzen, bekam ich einige seltsame Konflikt wie folgt aus:Der Frame-Wert des Xcode-Änderungs-Storyboards führt automatisch zu einem Git-Merge-Konflikt. Wie man es löst?

<<<<<<< HEAD 
    <rect key="frame" x="254.00000003476939" y="0.0" width="63" height="21"/> 
======= 
    <rect key="frame" x="254.00000010362709" y="0.0" width="63" height="21"/> 
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Wir haben nie den Wert von x ändern, und wir immer integer wie Wert geben. Offensichtlich hat Xcode den Wert automatisch geändert. Wie verhindert man, dass solche Dinge passieren?

Antwort

2

Sie könnten vermeiden, diesen geänderten Wert zu überprüfen, indem Sie Git davon überzeugen, dass der Dateiinhalt nicht geändert hat.

Das ist möglich mit einem clean Skript, das dafür verantwortlich sein wird, nur einen ganzzahligen Wert für x zu behalten.
Dieses Skript wird nur auf die .storyboard Dateien angewendet (wie described here) und muss "254.xxx" durch "254" ersetzen.

sed -i 's/x=\"([^0-9]+).*\"/x=\"\1\"/g' 

Die Wiederherstellung der Datei durch das Skript durch eine content filter driverautomatisiert, eine .gitattributes declaration verwenden.

https://i.stack.imgur.com/tumAc.png
(Bild von "Customizing Git - Git Attributes" von "Pro Git book"))

Sobald Sie erklären, dass der Inhalt Filer-Treiber in Ihrem lokalen git Config, wird es automatisch auf git commit, die Datei wiederherzustellen.
Oder es wird die Datei unverändert als git diff/git status angesehen, auch wenn XCode diesen Wert geändert hat.

Siehe ein vollständiges Beispiel in "Best practice - Git + Build automation - Keeping configs separate".

Verwandte Themen