Pour une classe de systèmes d'exploitation que je prends, j'ai dû exécuter Freebsd5.4. Comme je ne voulais pas me battre pour essayer de construire git sur une version de bsd publiée avant la sortie de git, je pensais que ce serait bien d'utiliser git
Arch depuis sshfs
.
En tout cas, j'ai trouvé une solution de contournement qui m'a suggéré de donner sshfs
l'option -o workaround=rename
.
Cela semble faire git
plaisir, mais je suis plutôt confus quant à ce qui vient de se passer ...
Tout ce que la page de manuel dit sur la solution de contournement est
fix renaming to existing file
mais je suis complètement perplexe quant à ce que cela signifie ...
Que fait exactement cette option?
Réponses:
sshfs utilise le protocole SSH File Transfer Protocol (SFTP). La solution de contournement que vous avez activée consiste à contourner la sémantique d'une opération rename () sur ce protocole lorsque le «nouveau» nom existe déjà.
Le comportement POSIX pour rename () dans ce cas consiste à supprimer le fichier existant et à terminer le changement de nom.
Dans le protocole SFTP, vous pouvez renommer un fichier avec l'opération SSH_FXP_RENAME; cependant, son comportement lorsque le nom cible existe déjà semble dépendre de la version du protocole que vous utilisez et des indicateurs que vous passez. La page wikipedia du protocole SFTP contient des liens vers divers projets de RFC pour différentes versions du protocole. Dans Draft 00, le comportement est répertorié comme suit:
Dans le projet 13 , le comportement est répertorié comme
Pour faire face à l'échec possible d'une opération rename () lorsque le nom cible existe, sshfs fournit la solution de contournement suivante (si elle est activée) :
Dans ce code, "from" est le nom existant du fichier que nous voulons renommer et "to" est le nouveau nom que nous voulons. En mettant de côté une certaine longueur de chemin et une comptabilité des erreurs, cela contourne
Cela évite le conflit "le fichier existe déjà", mais modifie également la sémantique des opérations rename (), c'est pourquoi vous ne voudriez pas le faire par défaut.
la source