Festplattenzugriff für App-Store-Apps
ABDiff ist eine App Store-App, also läuft sie in der Sandbox von Apple. Die Sandbox verhindert, dass die App Dateien liest, es sei denn, Sie gewähren explizit Zugriff (z. B. indem Sie einen Ordner auswählen, Dateien hineinziehen oder ein Zugriffsstammstamm in Einstellungen hinzufügen).
Deshalb sehen Sie manchmal eine Aufforderung wie:
“ABDiff benötigt Zugriff auf diesen Ordner, um von Git übergebene Dateien zu öffnen.”
Warum
git difftool eine Eingabeaufforderung für den
Festplattenzugriff auslöst
Wenn Sie git difftool ausführen, erstellt Git
normalerweise temporäre Kopien der Dateien, die es
vergleichen möchte. Diese befinden sich in macOS-Temp-Ordnern wie:
/private/var/folders/.../T/...
Diese Pfade befinden sich ** außerhalb Ihres Repo-Ordners**, daher
gilt ein gespeicherter Zugriffsroot wie
/Users/you/Developer/code nicht. ABDiff bittet Sie daher,
einen Ordner zu genehmigen, der die temporären Dateien abdeckt, damit es
sie öffnen kann.
Wenn Sie die Eingabeaufforderung ablehnen, kann ABDiff die temporären Dateien nicht lesen und Sie sehen Fehler wie “Keine Berechtigung zum Lesen …”.
Was zu tun ist
Verwenden Sie eine dieser Optionen:
Sie können gespeicherte Zugriffswurzeln in Einstellungen → Ordnerzugriff überprüfen oder entfernen.
Erlauben Sie den vorgeschlagenen Ordner, wenn Sie dazu aufgefordert werden. ABDiff fügt den ausgewählten Ordner zu Einstellungen → Ordnerzugriff hinzu, damit er ohne Aufforderung wiederverwendet werden kann (es sei denn, Sie deaktivieren “Git-Zugriffsaufforderungen hier speichern”).
Fügen Sie in den Einstellungen ein breiteres Zugriffsroot hinzu, wenn Sie Git difftool häufig verwenden, zum Beispiel:
/private/var/folders
Vermeiden Sie temporäre Pfade, indem Sie echte Dateien in Ihrem Repo anstelle von
git difftoolvergleichen, z.B. ziehen Sie die Dateien in ABDiff.
Warum es wie „Vollzugriff auf die Festplatte„ aussieht
Wenn Git Dateien von verschiedenen Orten aus übergibt (z. B. eine in
Ihrem Repo, eine in /private/var/...), kann das einzige
gemeinsame übergeordnete / sein. In diesem Fall kann die
Systemauswahl wie “die gesamte Festplatte” aussehen, aber ABDiff liest
immer noch nur die Dateien, die Sie öffnen.
ABDiff fordert nicht allein vollen Festplattenzugriff an und scannt Ihr Laufwerk nicht. Es liest nur Dateien und Ordner, die Sie explizit öffnen oder auf die Sie Zugriff gewähren.