Man stelle sich vor, auf einem entfernten, per SSH erreichbaren Server liegen Dateien, die man gerne ins SVN einchecken möchte. Leider ist auf dem Zielsystem kein Subversion installiert.
Also dachte ich mir, nutzt du die hier bereits öfter erwähnten Möglichkeiten von FUSE und seinen Dateisystemen. Hier SSHFS [1]:
sshfs user@entfernter.server.de: working-copy
funktioniert auch wunderbar, das entfernte Verzeichnis wird transparent gemountet und man kann mit allen Tools darauf arbeiten, bis auf Subversion.
svn: Can't move 'test/.svn/tmp/entries' to 'test/.svn/entries': Operation not permitted
lautet die trotzige Antwort.
Bei der Recherche fand ich viele Blogs mit diesen Problemen, die aber meist eklige Hacks mit
rm und
cp vorschlugen.
Schließlich fand ich auf der macfuse-devel Mailingliste einen Hinweis auf die FAQ [2] von SSHFS:
The reason is that SFTP protocol version 3 (which is implemented by OpenSSH's sftp-server) defines the rename operation slightly differently than POSIX. The difference is that renaming to an existing file or directory will fail instead of atomically replacing the old file.
The -o workaround=rename option will try to emulate POSIX rename semantics, but it cannot guarantee atomicity. In most of the cases this doesn't matter, and things will work fine with this option.
Und siehe da: mit
sshfs -o workaround=rename user@entfernter.server.de: working-copy
funktioniert auch SVN wie gewünscht.
Quellen:
[1]
http://fuse.sourceforge.net
[2]
http://fuse.sourceforge.net/wiki/index.php/SshfsFaq