Accès au disque pour les apps App Store
ABDiff est une application App Store, elle fonctionne donc dans le bac à sable d’Apple. Le bac à sable empêche l’application de lire les fichiers à moins que vous n’accordiez explicitement l’accès (par exemple en choisissant un dossier, en faisant glisser des fichiers ou en ajoutant une racine d’accès dans Paramètres).
C’est pourquoi vous voyez parfois une invite comme :
« ABDiff a besoin d’accéder à ce dossier pour ouvrir les fichiers transmis par Git. »
Pourquoi
git difftool déclenche une invite d’accès au disque
Lorsque vous exécutez git difftool, Git crée
généralement des copies temporaires des fichiers qu’il
souhaite comparer. Ceux-ci vivent dans des dossiers temporaires macOS
tels que :
/private/var/folders/.../T/...
Ces chemins sont en dehors de votre dossier de
dépôt, donc une racine d’accès enregistrée comme
/Users/you/Developer/code ne s’applique pas. ABDiff vous
demande donc d’approuver un dossier qui couvre les fichiers temporaires
afin qu’il puisse les ouvrir.
Si vous refusez l’invite, ABDiff ne peut pas lire les fichiers temporaires et vous verrez des erreurs telles que “Pas d’autorisation de lecture…”.
Que faire
Utilisez l’une de ces options :
Vous pouvez consulter ou supprimer les racines d’accès enregistrées dans Paramètres → Accès au dossier.
Autoriser le dossier suggéré lorsque vous y êtes invité. ABDiff ajoute le dossier choisi à Paramètres → Accès au dossier afin qu’il puisse être réutilisé sans demande (à moins que vous ne désactiviez “Enregistrer les invites d’accès Git ici”).
Ajoutez une racine d’accès plus large dans Paramètres si vous utilisez fréquemment Git difftool, par exemple :
/private/var/folders
Évitez les chemins temporaires en comparant les fichiers réels à l’intérieur de votre dépôt au lieu de
git difftool, par exemple, faites glisser les fichiers dans ABDiff.
Pourquoi cela ressemble à un « accès complet au disque »
Si Git transmet des fichiers à partir d’emplacements différents (par
exemple, un dans votre dépôt, un dans /private/var/...), le
seul parent commun peut être /. Dans ce cas, le sélecteur
de système peut ressembler à un “disque entier”, mais ABDiff ne lit
toujours que les fichiers que vous ouvrez.
ABDiff ne demande pas d’accès complet au disque par lui-même et ne scanne pas votre lecteur. Il ne lit que les fichiers et les dossiers que vous choisissez explicitement d’ouvrir ou d’accorder l’accès.