Für eine Betriebssystemklasse, die ich nehme, musste ich Freebsd5.4 ausführen. Da ich mich nicht mit dem Versuch herumschlagen wollte, git auf einer Version von bsd zu bauen, die vor der Veröffentlichung von git veröffentlicht wurde, dachte ich, es wäre ordentlich, sie git
von Arch her zu verwenden sshfs
.
Auf jeden Fall fand ich eine Problemumgehung , die vorschlug, dass ich sshfs
die Option gebe -o workaround=rename
.
Es scheint git
glücklich zu machen , aber ich bin ziemlich verwirrt darüber, was gerade passiert ist ...
Alles, was die Manpage über die Problemumgehung sagt, ist
fix renaming to existing file
aber ich bin völlig verblüfft, was das bedeutet ...
Was genau macht diese Option?
Antworten:
sshfs verwendet das SSH File Transfer Protocol (SFTP). Die von Ihnen aktivierte Problemumgehung besteht darin, die Semantik einer Rename () - Operation für dieses Protokoll zu umgehen, wenn der "neue" Name bereits vorhanden ist.
In diesem Fall besteht das POSIX-Verhalten für rename () darin, die vorhandene Datei zu entfernen und die Umbenennung abzuschließen.
Im SFTP-Protokoll können Sie eine Datei mit der Operation SSH_FXP_RENAME umbenennen. Das Verhalten, wenn der Zielname bereits vorhanden ist, scheint jedoch von der Version des verwendeten Protokolls und den übergebenen Flags abzuhängen. Die Wikipedia-Seite für das SFTP-Protokoll enthält Links zu verschiedenen RFC-Entwürfen für verschiedene Versionen des Protokolls. In Entwurf 00 ist das Verhalten wie folgt aufgeführt:
In Entwurf 13 wird das Verhalten als aufgeführt
Um den möglichen Fehler einer Rename () - Operation zu beheben, wenn der Zielname vorhanden ist, bietet sshfs die folgende Problemumgehung (falls aktiviert) :
In diesem Code ist "from" der vorhandene Name der Datei, die wir umbenennen möchten, und "to" der neue Name, den wir möchten. Wenn Sie die Pfadlänge und die Fehlerbuchhaltung beiseite lassen, können Sie dies umgehen
Dies vermeidet den Konflikt "Datei existiert bereits", ändert aber auch die Semantik der rename () -Operationen, weshalb Sie dies standardmäßig nicht möchten.
quelle