Git, wie man .gitattributes für Storyboards und .xib-Dateien setzt

8

Hintergrund : git - oder jeder andere SCM - kann Storyboards, xibs und pbxproj Dateien "erfolgreich" zusammenführen, da sie im Kern nur XML sind. Manchmal gibt es Konflikte, die durch die üblichen Konfliktlösungsstrategien gelöst werden können. Aber xibs und Storyboards sind serialisierte Formate einiger ziemlich komplexer Datenstrukturen, so dass der Spaß beginnt.

Genau wie bei anderem Quellcode garantiert eine erfolgreiche Zusammenführung nicht, dass alle zusammengeführten Änderungen korrekt zusammen funktionieren. Mit den fraglichen Dateien kann git erfolgreich zusammenführen, aber Xcode zeigt manchmal einen Fehler "Konnte Archiv nicht lesen" an, wenn Sie versuchen, es zu öffnen - d. H. Die Zusammenführung hat die XIB beschädigt.

Ich habe Vorschläge gesehen, wie git ignition .xibs ignoriert (nicht praktikabel), oder in .gitattributes disable diff durch Einstellung von

%Vor%

Technisch gesehen behebt dies das Problem mit dem Zusammenführungskonflikt / korrupten xib - aber jetzt gehen die Änderungen von jemandem verloren?

Auch die beste Empfehlung, die ich für die Projektdatei gesehen habe, ist merge = union in .gitattributes:

%Vor%

Frage : Ich habe ziemlich viel gesucht und es scheint keine gute Lösung zu geben. Können mir Erfahrungswerte sagen, was in ein paar Anwendungsfällen passiert?

  1. Im Projekt benenne ich eine Datei von x in y um und lösche DateiA. In der Zwischenzeit hat ein anderer Programmierer Änderungen vorgenommen, um Datei C hinzuzufügen und Datei D zu löschen. Was ist das Ergebnis der Zusammenführung? Ich bin mir sicher, dass die tatsächlichen Dateisystemänderungen korrekt sind, aber im Xcode Navigator-Panel:

    • Werde ich sowohl x als auch y sehen?
    • Wird DateiA wieder angezeigt, weil sie immer noch in der .pbxproj des anderen Programmierers ist?
    • Wird fileD immer noch da sein, weil es immer noch in meinem .pbxproj ist?
  2. Wenn git .xib-Dateien ignoriert - bekomme ich zumindest eine Warnung, dass eine Datei geändert wurde und nicht bearbeitet wird?

Kevin OMara 11.09.2013, 16:47
quelle

1 Antwort

1

Ich würde in diesen Tagen kein spezielles .gitattributes für Projektdateien oder Nibs setzen.

Ihre Probleme beim Zusammenführen gleichzeitiger Änderungen an Xcode-Projekten und xibs / Storyboards gibt es in jedem Team mit mehr als einem Entwickler.

Xcode-Projekte

Ein paar Tricks zum Umgang mit Xcode-Projektkonflikten:

  • Nehmen Sie eine Seite der Zusammenführung, und nehmen Sie die anderen Änderungen nach der Zusammenführung manuell vor. Wenn Sie Dateien gelöscht haben, werden sie rot angezeigt. Wenn Sie sie hinzufügen müssen, können sie hinzugefügt werden.
  • Wenn Sie Dateien zu Ihren Zielen hinzufügen, werden sie am Ende der Build-Phase "Compile Sources" angezeigt. Vermeiden Sie Konflikte mit anderen Personen, indem Sie sie in eine zufällige Position ziehen.
  • Verwenden Sie .xcconfig files, um Ihre Projekte zu konfigurieren und nicht den Abschnitt "Build-Einstellungen" . Config-Dateien sind trivial zu verschmelzen.

Im Zweifelsfall ist es mein bester Ratschlag, die Seite zu verschmelzen, zu entspannen und die Ergänzungen erneut zu spielen.

XIBs und Storyboards

Das Format der XIBs (und damit der Storyboards) hat sich in den letzten Monaten stark verändert. Ich habe festgestellt, dass zusätzliche Objekte an die internen Sammlungen der Datei angehängt werden und Zusammenführungen können einfach durchgeführt werden. Wenn Sie Änderungen an demselben Objekt vornehmen, müssen Sie möglicherweise manuell dorthin gelangen.

Dieser Beitrag von Itty Bitty Apps hebt die wichtigsten Änderungen hervor :

  

Die Vorteile dieses neuen XIB-XML-Formats sind vielfältig:

     
  • XIBs sind viel kleiner (weniger Codezeilen).
  •   
  • Ein Entwickler kann das XML leicht lesen und verstehen, was es in der Benutzerschnittstelle spezifiziert.
  •   
  • Das Zusammenführen von XIBs führt jetzt viel seltener zu kaputten XIBs. Vorher würden wir kaum einmal versuchen, ein XIB oder Storyboard zu verschmelzen.
  •   
    
Jessedc 08.12.2013, 00:43
quelle

Tags und Links