見落とされがちな Xcode FileMerge アプリを使用すると、2 つのファイル間で何が変更されたかを見つけることができます。このツールを使用して違いを見つける方法は次のとおりです。

Apple ソフトウェアのほとんどの開発者は、Apple の統合開発環境 (IDE) に精通しています。Xcode

ただし、いくつかのユーティリティアプリケーションがバンドルされています内部見落とされがちなXcode。

これらは:

  1. アクセシビリティインスペクター
  2. MLの作成
  3. ファイルマージ
  4. 楽器
  5. リアリティ コンポーザ プロ

Reality Composer Pro や Create ML など、これらのアプリのいくつかは新しいものですが、1 つのユーティリティファイルマージ何十年も存在しており、オープンステップ- 1990 年代初頭に Steve Jobs の別の会社 NeXT によって作成されたオリジナルの開発者ツール。

Apple は 1997 年に NeXT を買収し、そのソフトウェアとオペレーティング システム (NeXTStep) が現在の macOS、iOS、および Xcode になりました。

Xcode の Applications フォルダー内のアプリ。

実際、Xcode の FileMerge は、オリジナルの NeXTStep から実質的に変更されていないまま今日まで生き残っている数少ないアプリの 1 つです。

FileMerge は元々、開発者がソース ファイルを比較およびマージするためのツールとして作成されましたが、ほとんどのプレーン テキスト (.txt) ファイルでも問題なく動作します。

NeXTStep のオリジナルの FileMerge アプリ。

FileMerge は、「Contents」という名前のフォルダー内の「Applications」というサブフォルダー内の Xcode アプリケーション バンドル内に存在します。したがって、Xcode バンドル内の FileMerge へのパスは次のようになります。

Xcode.app/Contents/Applications/FileMerge.app

FileMerge にアクセスするには 2 つの方法があります。Xcode 内からファイルマージを選択して実行することもできます。Xcode -> 開発者ツールを開く -> ファイルマージXcode のメニューを使用するか、Finder で Xcode アプリ バンドル自体を開き、/Contents/Applications サブフォルダーを開いて、FileMerge を Dock にドラッグしてそのショートカットを作成することもできます。

Xcode のバンドルを開くには、コマンドを押しながらクリックFinder の Xcode アイコンを押しながら、指示Mac のキーボードのキーを押して選択するパッケージ内容を表示表示されるポップアップ メニューから次のようにします。

Finder で Xcode アプリ バンドルを開きます。

「パッケージ」と「バンドル」という用語は、macOS ではある程度同義です。バンドルは、実行可能コードが含まれていることを Finder に伝えるために特別なビットが設定された単なるフォルダーです。

また、コマンドオプションFileMerge アプリを Xcode のアプリケーション フォルダーから Finder のデスクトップにドラッグするには、Mac のキーボードのキーを押したまま、Xcode のアプリケーション フォルダー内のアプリ アイコンをクリックし、デスクトップにドラッグします。これにより、デスクトップに FileMerge へのエイリアス ショートカットが作成されます。

Xcodeの「開発者ツールを開く」メニューからFileMergeを開きます。

あなたはできるコマンドを押しながらクリックFinder の Dock にある場合は Xcode アイコン自体を選択し、「開発者ツール」→「ファイルマージ」を開きますポップアップ メニューからメニュー項目を選択して FileMerge を開きます。これは、Xcode 内から直接開くのと同じ効果があります。

これらの方法はいずれも FileMerge を開くために機能します。Xcode バンドル内からアプリ自体を削除しないでください。削除しないと、Xcode アプリの整合性が損なわれる可能性があります。

Dock から FileMerge を開きます。

ファイルマージの使用

FileMerge を開くと、そのインターフェイスは簡単です。2 つのレベルを持つ 1 つの小さなウィンドウが表示されます。1 つは比較する元のファイル用 (「左」)、もう 1 つは新しいファイル用 (「右」) です。 、同じであるはずですが、オリジナルと比較していくつかの変更が含まれています。違いを比較するには、どちらのファイルもプレーン テキスト ファイルである必要がありますが、FileMerge は他の限られた種類のテキスト ファイルでも機能する場合があります。

FileMerge はほとんどのエンコードされたテキスト ファイルを処理できないため、プレーン テキストで使用することをお勧めします。 FileMerge を使用してエンコードされたファイルを比較しようとすると、「ファイルは ASCII ではありません」という警告が表示され、続行するかどうかを尋ねられる可能性があります。

続行することを選択すると、ファイルが比較されますが、通常は無意味なエンコードされた比較のみが表示されます。FileMerge は、ほとんどのファイルをデコードする方法を知りません。

アスキーの頭字語です情報交換のための米国標準規格- ローマ字ベースの言語テキスト用の古代の 8 ビット エンコーディング。それ以来、ASCII は次のように置き換えられました。ユニコードこれは 16 ビットのテキスト エンコーディングです。これは、より大きな文字セットや特殊文字を使用するアジア言語やアラビア語など、他の言語のマルチバイト文字をサポートしているためです。

現在、Unicode はコンピュータのテキスト エンコーディングの世界標準ですが、日常的に使用されている古い 8 ビット ACSII ファイルに遭遇することもあります。

FileMerge UI は次のとおりです。

FileMerge のメイン ウィンドウ。

をクリックすることもできます。そしてmacOS の標準のオープン シートを使用してボタンを使用するか、Finder から 2 つのファイルを FileMerge ウィンドウの右側にある左右の画像ウェルにドラッグすることもできます。どちらを実行しても効果は同じです。

両方のファイルを FileMerge に設定すると、ディスク上のファイル パスが、ファイルの横にある 2 つの編集フィールドに表示されます。そしてボタン。

これで、ファイルを比較する準備ができました。簡単な例を使って説明します。

ファイルの比較

ファイルを FileMerge インターフェイスに設定した後、比較するメインウィンドウの右下隅にあるボタン。これにより、FileMerge の比較が実行され、両方のファイルを含む新しい差分 (diff) ウィンドウが開き、それぞれの変更が強調表示されます。

diff ウィンドウでは、元のファイルが左側に表示され、変更された (新しい) ファイルが右側に表示されます。変更は、変更されたファイル内のテキスト変更のセクションごとに異なる色付きの帯で示されます。

FileMerge の差分ウィンドウ。

ファイルのテキストをスクロールすると、FileMerge はこれらの非常に独創的なバンドを表示して、テキストのどのセクションが変更されたかをアニメーション化します。セクションが大きいほどスクロールが遅くなるため、反対側のファイルが追いつきます。

新しいファイルにテキストのブロックが挿入されている場合、ブロック全体が強調表示されますが、他のファイルではその挿入ポイントが同じ色で、挿入されたテキストを含む側から伸びる細い帯で表示されます。 diff ウィンドウをスクロールすると、バンドがスムーズに移動するので、何が変化したかがわかります。

単一行の変更または数行のみの変更の場合、差分ウィンドウでは、変更された行が同様のバンドで強調表示されますが、高さはわずか数行です。

差分ウィンドウの中央には 1 つの列があり、2 つのファイルのどちらに変更が含まれているかを示す矢印が含まれています。矢印は左と右の両方向に実行できます。の変更バンドをクリックすると、任意の 1 つのテキスト変更を選択できます。中心各変更矢印がある列。

変更を選択するには、中央の列をクリックする必要があります。差分ウィンドウの左または右ペインの変更バンドをクリックしても何も起こりません。各変更矢印の上には、ファイルの先頭からの変更番号を示す番号が付いています。

比較しているファイルが標準プログラミング言語のソース コード ファイルである場合、差分ウィンドウの左右の差分ペインの上部にポップアップ メニューも表示されます。各メニューにはファイル内のすべての関数名またはメソッド名が含まれており、いずれかのメニューからメソッド名を選択すると、ファイル内のそのメソッドにジャンプします。

祖先とマージの使用

FileMerge ウィンドウの下部に、「祖先パスやマージ パスを指定するにはウィンドウを拡大してください」という小さなメモが表示されます。

FileMerge ウィンドウの下部をクリックして下にドラッグすると、追加のインターフェイスが表示されます。

[祖先/マージ] ペインの使用。

この UI でできることは、3 方向マージ用に 3 番目のファイルを追加することです。 Ancestor/Merge UI を非表示にするには、FileMerge ウィンドウの下部をクリックして上にドラッグします。

変更をマージする

差分ウィンドウが開き、FileMerge が 2 つの違いを変更バンドとともに表示したら、各変更を処理する方法を選択できます。各変更を無視するか、新しいテキストを反対側のファイルにコピーする (マージ) ことができます。 )、または特定の変更を削除することもできます。

これらのアクションは、アクション差分ウィンドウの右下隅にあるポップアップ メニュー。

メニューで可能なオプションは次のとおりです。

  1. 左を選択してください
  2. 正しく選択してください
  3. 両方を選択してください (左から)
  4. 両方を選択してください (右から順)
  5. どちらも選択しない

最初の 2 つのオプションのいずれかを選択すると、左側または右側のファイルに変更が加えられます。これらのオプションのいずれかを選択すると、どのファイルが変更を受け取るかが決まります。

どちらかを選択すると、両方を選択してくださいオプションを使用すると、左側または右側のファイルの変更内容に基づいて、変更が両方のファイルに追加されます。

選択した場合どちらも選択しないを選択すると、その変更の矢印が中央の列から削除され、変更が無視されることを示します。

ポップアップ メニューからどのアクションを選択したかに関係なく、変更が行われ、差分ウィンドウの中央の列の矢印が新しい現実を反映するように更新されます。

また、ないことに注意してください。"変化"UI の ボタン - ポップアップ メニューからアクションを選択すると、それ以上の警告やユーザーの操作なしで、変更が即座に行われます。

変更をディスクに保存する

diff ウィンドウですべての変更を行ったら、アクションメニューから変更を保存するには、変更をディスクに保存する必要があります。

通常のテキスト エディタとは異なり、FileMerge は、選択したときに変更を元のファイルに自動的に保存しません。ファイル -> マージを保存からのファイルメニュー。これは、後でそのまま使用したい場合に備えて、元のファイルをそのままの状態で保存できるようにするためです。

代わりに、選択すると、ファイル -> マージを保存標準の [保存] パネルが常に表示されるので、何をするかを決定できます。保存元の左側のファイルと同じ場所にある ボタンをクリックすると、元のファイルを置き換える場合に昇格されます。クリックすると交換する元のファイルは上書きされます。

または、元のファイルを同じ名前で別の場所に保存する場合は、そのファイルに移動して、保存ボタンをクリックするか、ファイルの名前を別の名前に変更して、元のファイルと同じ場所に保存することもできます。これにより、選択した名前で新しいファイルが作成されます。

ファイル -> 結合を名前を付けて保存これは事実上保存と同じですが、新しいファイルが作成されるようにファイルに新しい名前を付ける必要があります。

を使用して変更を加えたら、アクションdiff ウィンドウのメニューを使用している場合、ウィンドウを閉じるか FileMerge を終了しようとすると、マージを保存するように求められます。保存せずに差分ウィンドウを閉じようとすると、保存するかどうかを尋ねる警告が表示されます。

あなたはできるキャンセルアラートから、または保存しないでくださいこれにより、変更が破棄されます。

をクリックすると、保存アラート内のボタンを選択した場合と同じです。ファイル -> マージを保存からのファイルメニュー。

いずれにしても、マージが保存されると、結果のファイルには差分ウィンドウで行ったすべての変更が含まれます。元のファイルを明示的に上書きしなかった場合、元のファイルはそのまま残ります。

ディレクトリの比較

2つを比較することもできますフォルダFileMerge を使用してファイルを含む (ディレクトリ) を作成します。これを行うには、上記の手法を使用しますが、Left/Right インターフェイスで 2 つのファイルではなく 2 つのフォルダーを選択します。

FileMerge での基本的なフォルダー比較の可能性は、ファイルのセットをチェックして、それらが同一であるかどうか、いずれかのフォルダー内のファイルが変更されているかどうか、またはいずれかのフォルダーにファイルが追加または削除されたかどうかを確認することです。

を打つと、比較するファイルの 2 つのフォルダーにある ボタンをクリックすると、FileMerge は両方のセットを調べて、両方のフォルダーに含まれるすべてのファイルを比較します。

結果として表示されるフォルダー比較ウィンドウには、各フォルダー内のファイル セット間の違いが表示されます。

ディレクトリ比較結果ウィンドウ。

両方のフォルダーに同じ名前の 2 つのファイルが含まれている場合、それらのファイル名は左側にグレー表示されます。ファイルが一方のフォルダーに表示され、もう一方のフォルダーには表示されない場合、その名前は斜体で表示されます。

左側のペインで任意のファイル名をシングルクリックすると、ペインの左下隅にそのファイルのステータスが表示されます。

「除外」という名前の右側のペインで、除外するフォルダー変更オプションを設定できます。

その下には 2 つのポップアップ メニューがあります。最初のメニューには、ファイルを表示および比較するための項目が含まれています。このメニューから項目を選択すると、差分ウィンドウの「アクション」メニューと同様のアクションが実行されます。

もう 1 つのポップアップ メニューの名前は、マージ比較された 2 つのフォルダー間でファイルを移動または結合するためのオプションが含まれています。ファイルを結合したり、左側または右側のファイルのみを使用することを選択したり、ファイル全体を削除したり、比較できなかったファイルをリストから削除したりすることができます。

「表示」項目と「結合」項目は混乱を招く可能性があり、クリックしないとメニュー ラベルであるべきものが表示されるため、Apple のヒューマン インターフェイス ガイドラインに違反します。いずれかをクリックすると、タイトル「表示」または「結合」がいずれかのメニューから消え、その後再び表示されます。マウスを放したとき。

「結合」メニューは注意して使用してください。

使用した後は、マージメニューに表示されると、ウィンドウの左下隅にある小さなステータス メッセージが更新され、変更内容が反映されます。このウィンドウは主に、比較される 2 つのフォルダー間でファイルを結合または移動するためのものであることに注意してください。

FileMerge での検索、再比較、およびリセット

FileMerge でファイル比較を実行すると、上で説明したように、スクロールすることで差分ウィンドウに差分を表示できます。探すFileMerge の画面上部のメニュー バーのメニュー。

FileMerge での検索の可能性は次のとおりです。

  1. 次へ進む
  2. 前に戻る
  3. 行/差分に移動
  4. 探す
  5. 次を探す
  6. 前を検索
  7. 選択範囲を使用して検索する
  8. 選択範囲にジャンプ

次/前のオプションを使用すると、次または前の相違点、差分ウィンドウの左側または右側の変更、または次の競合にジャンプできます。競合は 2 つのほぼ同一のテキスト ブロックであり、どちらにも変更が含まれているため、正確な比較は不可能です。

競合を手動で解決する必要があります。

差分ウィンドウでテキストを選択し、「検索」->「検索に選択範囲を使用」, FileMerge では [検索] ウィンドウが開きますが、選択したテキストが [検索] 検索フィールドに自動的に挿入されます。

比較が終了したら、差分ウィンドウを閉じて、ファイル -> ファイルの比較これにより、メインの FileMerge ウィンドウが再び開きますが、最後に選択したファイル パスはそのまま残ります。

選択することもできますファイル -> ファイルを再比較前回の比較を再度実行します。これは、ファイルを外部編集して保存し、変更後に再比較する場合に便利です。

ファイルマージ設定

選択した場合ファイルマージ -> 設定Mac の画面上部にある FileMerge メニュー バーから、FileMerge の動作に関するさまざまな動作を設定できる FileMerge 環境設定ウィンドウが表示されます。

  1. テキストを折り返す
  2. 変更番号を表示
  3. マージ方向を表示
  4. スクロールバーに変更を表示
  5. 相違点を強調表示する
  6. フォント
  7. ディレクトリ比較オプション
  8. 比較用のフィルター
  9. 無視するファイル

FileMerge 設定での変更を保存するには、変更を加えてウィンドウを閉じます。

[ファイルマージ設定]ウィンドウ。

FileMerge は何十年にもわたって macOS 開発者ツールの主力であり続けていますが、その仕組みを理解すると、おそらく毎日使用することになるほど便利です。そのインターフェイスは、ソフトウェアが小さく、シンプルで、速く、使いやすかった時代を思い出させます。

これは macOS に長い間潜んでいた隠された宝石であり、ファイルを比較するそのシンプルな機能を一度発見すると、これなしでどうやってやっていたのか不思議に思うでしょう。