2012-07-18 14 views
42

これはストーリーボードが導入されるまで対処しなければならなかった問題です。UIに競合が生じるたびに、2人の開発者が同じXIBファイルで同時に作業していないことを確認しました。 XIBの競合を解決することを控えた理由は、XIBがXML形式で表現されているため、2つのバージョンをマージする「良い」方法がないという問題があります。ストーリーボードとSVNの競合

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

この問題に対処する方法についてのご意見はありますか?あなたの努力のために事前に感謝します。

+3

よろしくお願いいたします。これは良い質問です! –

+1

将来の世代にも役立つと期待しています:) – Stavash

+0

この 'YourProjectName.xcodeproj/project.xcodeproj/xcuserdata/yourusername.xcuserdatad/UserInterfaceState.xuserstate'をsvnignoreに追加しようとしましたか?私は同じプロジェクトでもう一人の開発者と仕事をしていますが、私たちはこれらの問題を抱えていません。gitを使用していますが、同じことです.gitignoreに入っています。 – ant

答えて

38

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

アプリにストーリーボードが1つだけ含まれる理由はありません。ストーリーボードをモジュールのストーリーボードに分割します。 +storyboardWithName:bundle:を使用してストーリーボードモジュールを読み込むことができます。

他の優れたストーリーボードのアイデアについては、UIStoryboard Best Practicesを参照してください。


更新

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

大規模なコードベースでは、状況が複雑になる可能性があります。適切に分解されたソリューションは、競合の数を減らし、必要なロックアウトの回数を最小限に抑えます。

+0

しかし、私のアプリケーションのすべてのUI要素の間に、重要な関係とセグがあればどうでしょうか? – Stavash

+0

モノリシックなストーリーボードを分割するのは、あなたとあなたのプロジェクトのニーズによって決まります。あなたがどこにいてもあなたのストーリーボードを分解することができない場合は、あなたの問題はスパゲッティUIほどのストーリーボードではないかもしれません。 –

+1

私たちは実際にストーリーボードを通じてすべてのUIを管理することができます。ストーリーボードの全ポイントであるため、分解能の問題は無関係です。すべてを分解すれば、XIBを別々に戻すことができます。 – Stavash

-3

また、最新のソースコード管理ツールを見ることもできます。たとえばGitにはインテリジェントなマージ機能があります。 あなたのワークフローをにアップグレードする必要がある理由については、this linkを参照してください。

+0

でこれに最善の答えを得ました。これは良い点ですが、 SVNは大きな問題です。私たちのプロジェクトはすべてSVNによって管理されており、GITに転送するためのコードリビジョンがたくさんあります。しかし、オプションをチェックします。ありがとう。 – Stavash

+0

移行を検討する場合はgit-svnを見てください。 gitとsvnリポジトリを同期させるツールです。それは始まりとして役立つことができます。 – user1534610

+0

ありがとう、それをチェックします – Stavash

0

ここで私が解決策を見いだそうとしているときに思いついたことがあります。

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

ソースコードモードでストーリーボードを開くと、変更することができます(痛みの種類です)。しかし、あなたは他のストーリーボードからコードを追加して自分で変更することができます - 私はSVNを使用していませんが、gitリポジトリを使っています私はストーリーボードの他のバージョンを見ることができます。優れたソリューションです。私は、IBでストーリーボードを再開しようとすると、Xcodeがランダムにクラッシュするいくつかの問題がありました。場合によってはコードを貼り付けることもありますが、時にはそうではありません。数回、<scene>タグの値を変更する必要がありました。私の経験ではかなりヒットしましたが、何かを試す前にファイルをバックアップしておけばそれはうまくいくかもしれません。

問題が解決したかどうかを確認することに興味があります。

+0

ありがとうダスティン。あなたが記述したクラッシュは、過去に自分自身で何度も経験されたものであり、XMLソースとしてStoryboardファイルを編集しないようにしようとしている理由です。 – Stavash

0

XMLファイルをマージする方法はありますか?

幸いなことに、SVNでは、さまざまな種類のファイルに対してマージを実行するために使用するマージツールを変更できます。 (例えばtutorial for using P4Merge

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

そこ(DisplayXMLFilesプレフィルター付き)WinMergeのだ、またはdiffxml、またはXMLMergerまたはjava xmlmerge tool

関連する問題