App Store アプリのディスクアクセス
ABDiffはApp Storeのアプリであるため、Appleのサンドボックス内で動作します。 サンドボックスは、明示的にアクセス権を付与する場合を除き、アプリがファイルを読み込むことを防止します(例として、フォルダーを選択したり、ファイルをドラッグしたり、設定 でアクセスルートを追加するなど)。
このため、時々次のようなプロンプトが表示されます。
ABDiff は、Git から渡されたファイルを開くためにこのフォルダーへのアクセスが必要です。
なぜ
git difftool
がディスクアクセスプロンプトをトリガーするのか
git difftool を実行すると、Git
は通常、比較したいファイルの temporary copies
を作成します。 これらは macOS
の一時フォルダーに次のように格納されています:
/private/var/folders/.../T/...
それらのパスはリポジトリフォルダーの外部にあるため、/Users/you/Developer/code
のような保存されたアクセスルートは適用されません。 したがって、ABDiff
は、テンポラリーファイルを含むフォルダーを承認していただき、開くことができるように求めます。
プロンプトを拒否した場合、ABDiff は一時ファイルを読み取ることができず、「No permission to read …」のようなエラーが表示されます。
対処方法
これらのオプションのいずれかをご利用ください。
設定 → Folder Access で、保存されたアクセスルートを確認または削除できます。
プロンプトが表示されたら、提案されたフォルダーを許可してください。 ABDiff は、選択したフォルダーを 設定 → Folder Access に追加し、プロンプトなしで再利用できるようにします(ただし「Save Git access prompts here」を無効にしない限り)。
たとえば、Git difftool を頻繁に使用する場合は、設定でより広いアクセスルートを追加してください。
/private/var/folders
リポジトリ内の実際のファイルを
git difftoolではなく比較することで、temp パスを回避してください。例えば、ファイルを ABDiff にドラッグしてください。
なぜ「フルディスクアクセス」のように見えるのか
Git
が異なる場所(例:リポジトリ内のファイル、/private/var/...
のファイル)からファイルを渡す場合、唯一の共通親は /
である可能性があります。
その場合、システムピッカーは「全ディスク」のように見えることがありますが、ABDiff
は依然として開いたファイルだけを読み取ります。
ABDiff は単独でフルディスクアクセスを要求せず、ドライブをスキャンしません。 それは、明示的に開くかアクセスを許可したファイルやフォルダーのみを読み取ります。