web-dev-qa-db-ja.com

ストーリーボードとSVNの競合

これは、ストーリーボードが導入されるまでは対処する必要がなかった問題です。UIで競合が発生する可能性がある場合は常に、2人の開発者が同じXIBファイルで同時に作業しないようにしました。 XIBの競合の解決を控えた理由は、問題のある副作用がある可能性があるためです(XIBはXML形式で表されるため、2つのバージョンをマージする「良い」方法はありません)。

すべてのUI要素が同じ.storyboardファイル内にあるため、この問題に直面しています。プロジェクト内の2つのUI要素の同時作業を防止すると、並列作業が非常に困難になります。

この問題への対処方法に関する提案はありますか?よろしくお願いします。

43
Stavash

ストーリーボードを複数のストーリーボードに分割します。

アプリにストーリーボードを1つだけ含める必要はありません。ストーリーボードをモジュールストーリーボードに分割します。 +storyboardWithName:bundle:を使用して、ストーリーボードモジュールをロードできます。

参照: IStoryboard Best Practices その他の優れたストーリーボードのアイデア。


更新

これは問題の完全な解決策ではないことに注意することが重要です。同様に、巨大なクラスを小さなモジュールに分解するソースコードのマージ競合の可能性を完全に回避することはできません。ストーリーボードのマージ競合の可能性も回避できません。考えられるのは、管理可能な問題になるまで、可能性を減らすことです。

大規模なコードベースでは、常にトリッキーなマージ状況が発生します。適切に分解されたソリューションは、競合の数を減らし、必要なロックアウトの数を最小限に抑えます。

39
Jeffery Thomas

これは、解決策を見つけようとしていじっていたときに思いついたものです。

Xcodeでストーリーボードファイルを右クリックして[名前を付けて開く]に移動すると、複数のオプションがあることがわかります。デフォルトは[インターフェイスビルダー-iOSストーリーボード]です。ただし、「ソースコード」を選択することもできます。

ストーリーボードをソースコードモードで開くと、変更を加えることができます(多少の苦労は伴います)。しかし、他のストーリーボードからコードを追加して独自に変更を加えることができます-私はSVNを使用していませんが、gitリポジトリを使用すると、ストーリーボードの他のバージョンを表示してコードをコピーできます。

これが優れたソリューションであるとは言えません。IBでストーリーボードを再度開こうとすると、Xcodeがランダムにクラッシュするという問題がありました。機能にコードを貼り付けることもあれば、しないこともあります。数回、<scene>タグの値。私の経験では、それはかなり当てはまるものですが、何かを試す前にファイルをバックアップすると、うまくいくかもしれません。

動作する場合は、お知らせください-この問題の解決策が見つかるかどうかを確認したいと思います。

0
Dustin

これは、XMLファイルのマージに関するものですか?

さいわい、SVNでは、さまざまな種類のファイルのマージに使用するマージツールを変更できます。 (例 P4Mergeを使用するためのチュートリアル

だから今、あなたはXMLファイルをマージするための素晴らしいツールを見つける必要があります(幸運:))

winMerge(DisplayXMLFilesプレフィルターを使用)、またはdiffxml、または XMLMerger または Java xmlmergeツール があります。

0
gbjbaanb