Skip to content
Snippets Groups Projects
Commit 5379f211 authored by Brian Moe's avatar Brian Moe
Browse files

Attempt to fix "Invalid cross-device link" bug.

parent 59ea7fe8
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ import os ...@@ -3,6 +3,7 @@ import os
import tempfile import tempfile
import logging import logging
import errno import errno
import shutil
class VersionedFile(file): class VersionedFile(file):
...@@ -80,7 +81,8 @@ class VersionedFile(file): ...@@ -80,7 +81,8 @@ class VersionedFile(file):
if version != 0: if version != 0:
raise IOError("VersionedFile symlink inconsistency.") raise IOError("VersionedFile symlink inconsistency.")
# XXX risky. race condition. # XXX risky. race condition.
os.rename(fullname, self._name_for_version(version)) #os.rename(fullname, self._name_for_version(version))
shutil.move(fullname, self._name_for_version(version))
self._repoint_symlink() self._repoint_symlink()
version += 1 version += 1
...@@ -125,7 +127,8 @@ class VersionedFile(file): ...@@ -125,7 +127,8 @@ class VersionedFile(file):
tmpname = tmp.name tmpname = tmp.name
tmp.close() tmp.close()
os.symlink(self._name_for_version(last_version), tmpname) os.symlink(self._name_for_version(last_version), tmpname)
os.rename(tmp.name, self.fullname) #os.rename(tmp.name, self.fullname)
shutil.move(tmp.name, self.fullname)
def known_versions(self): def known_versions(self):
path = self.absname path = self.absname
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment