17

2 つの .nib ファイルをマージしようとしています。FileMerge では、2 つのファイルの比較を問題なく表示できます。もう一方のファイル (左側) からコピーしたい 2 つの設定を除いて、すべての設定を 1 つのファイル (つまり右側) に保持しようとしています。違いは、autoresizingMask キーの整数値を変更する 1 行のコードだけです。したがって、マージするのは難しくありません。.nib ファイルを開くことができるのであれば、TextEdit を使用します。

ただし、「このファイルの種類は結合できません」というエラーが表示されます。このサイトに投稿された同様の質問への回答に記載されているように、.nib 拡張子の FileMerge > Preferences > Filters 設定を試してみましたが、うまくいきませんでした。私が知る限り、.nib の表示設定は「フィルター済み」のままにしておく必要があります。これは、フィルター処理されていないと読み取れないため、[適用] の選択を切り替えてみました。使用される実際のフィルター自体は変更または修正されるべきではないと思いますか?

FileMerge で問題なく比較ウィンドウに表示される 2 つの .nib ファイルをマージできない一般的な理由はありますか?

ありがとう

4

3 に答える 3

5

XIB はマージできます。単純なケース (テキストの変更、要素のサイズ変更など) では、安全で簡単です。最新の XIB バージョンは、さらに複雑なマージにも耐えることができます (Apple はフォーマットをアップグレードしており、最近ではかなり読みやすく、以前は作成していた数値 ID を使用していません)。エラーが発生しやすいマージ)。

問題は、FileMerge が ibtool pretty-print を介して XIB ファイルをフィルター処理するための組み込み構成をハードコーディングしているため、それらがマージ可能ではないと言うことです。

// 編集: Apple が実行可能ファイルの整合性の検証を追加したようです。そのため、パッチ ソリューションは機能しなくなりました。「FileMergeの使用をやめる」が今の解決策です。

いくつかのヒント:

  • FileMerge 環境設定で「空白を圧縮」オプションを有効にします。

  • diff が完全に混乱していて、XIB ファイルが完全に異なっているように見える場合、それらはおそらく異なるバージョンの形式です。マージする前に、各 XIB ファイルでこれを実行します(マージ競合マーカーのない元のファイルで)。

    ibtool --write foo.xib --upgrade foo.xib
    

これにより、XIB ファイルが最新の Xcode バージョンに変換されるため、両方が同じ構造になります。

于 2015-04-03T20:23:41.970 に答える
4

NIB ファイルと XIB ファイルはマージできませんが、魅力的かもしれません。FileMerge を使用して差分を確認すると便利な場合がありますが、この情報は、Interface Builder で手動で再作成した変更を通知する場合にのみ使用してください。

さらに、FileMerge は NIB ファイルの実際のテキスト diff を表示するのではなく、ibtool からの出力を表示します。FileMerge 設定で NIB のエントリを削除すると、実際のテキストの差分を表示できますが、この設定は FileMerge の起動間で保存されません。

于 2011-08-30T07:06:24.710 に答える
2

.xib ファイルはテキストです。特に、ストーリーボード ファイルに似た最近のファイルは機能するはずです。ただし、FileMerge のフィルター設定には、xib ファイルのセクションがあり、元のファイルではなく、処理された出力が比較されます。これにより、マージが保存されなくなります。

環境設定の「xib」エントリを削除するだけで理論的には機能するはずですが、そのフィルター行を削除しようとすると、FileMerge を再起動すると元に戻ってしまうようです。したがって、そのアプローチは機能していないようです。

うまくいくように見えるのは、2 番目の列のフィルター コマンドを次のように変更することですcat(つまり、"ibtool" コマンドとその引数を削除し、"cat" だけに置き換えると、元のファイルがそのままコピーされます) - - 次に、3 番目の列に「フィルター済み」ではなく「オリジナル」を表示することを選択します。その時点で、マージされた .xib ファイルを保存するときに、FileMerge (バイナリをハッキングすることなく) は問題ないように見えます。

これはバイナリの .nib ファイルでは機能しませんが、それらは直接編集されなくなったため、マージ中に大きな問題になることはありません。

于 2016-06-17T21:28:39.547 に答える