summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-03-26 00:26:52 +0000
committerbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-03-26 00:26:52 +0000
commit7f9dcb6819489f076ac41fc6babcadab4df58330 (patch)
tree92981036fadedecd9f3c6e0c21b7ce512ab68206
parent327bb973694f3f4df68568a61c4f71469dce9058 (diff)
downloadrdiff-backup-7f9dcb6819489f076ac41fc6babcadab4df58330.tar.gz
Don't copy attributes to hard links, and make --no-hard-links
override. Thanks to David Vasilevsky. git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@559 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-rw-r--r--rdiff-backup/CHANGELOG3
-rw-r--r--rdiff-backup/rdiff_backup/Hardlink.py1
-rw-r--r--rdiff-backup/rdiff_backup/Main.py9
-rw-r--r--rdiff-backup/rdiff_backup/backup.py3
4 files changed, 11 insertions, 5 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG
index 657796a..d8ccd56 100644
--- a/rdiff-backup/CHANGELOG
+++ b/rdiff-backup/CHANGELOG
@@ -23,6 +23,9 @@ Fixed user/group restoring error noticed by Fran Firman.
Checked in Robert Shaw's --chars-to-quote patch
+Treated hard link permission problem on Mac OS X by applying
+suggestion by David Vasilevsky.
+
New in v0.13.4 (2004/01/31)
---------------------------
diff --git a/rdiff-backup/rdiff_backup/Hardlink.py b/rdiff-backup/rdiff_backup/Hardlink.py
index 8b03d26..4bfd2ee 100644
--- a/rdiff-backup/rdiff_backup/Hardlink.py
+++ b/rdiff-backup/rdiff_backup/Hardlink.py
@@ -118,7 +118,6 @@ def link_rp(diff_rorp, dest_rpath, dest_root = None):
# This can happen if the source of dest_link_rpath was deleted
# after it's linking info was recorded but before
# dest_link_rpath was written.
- print "$$$$$$$", exc, exc[0], errno.errorcode[exc[0]]
if errno.errorcode[exc[0]] == 'ENOENT':
dest_rpath.touch() # This will cause an UpdateError later
else: raise Exception("EnvironmentError '%s' linking %s to %s" %
diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py
index 2f36859..cd77d63 100644
--- a/rdiff-backup/rdiff_backup/Main.py
+++ b/rdiff-backup/rdiff_backup/Main.py
@@ -415,7 +415,8 @@ def backup_set_fs_globals(rpin, rpout):
Log.FatalError("--never-drop-acls specified, but ACL support\n"
"disabled on destination filesystem")
- SetConnections.UpdateGlobal('preserve_hardlinks', dest_fsa.hardlinks)
+ if Globals.preserve_hardlinks != 0:
+ SetConnections.UpdateGlobal('preserve_hardlinks', dest_fsa.hardlinks)
SetConnections.UpdateGlobal('fsync_directories', dest_fsa.fsync_dirs)
SetConnections.UpdateGlobal('change_ownership', dest_fsa.ownership)
SetConnections.UpdateGlobal('chars_to_quote', dest_fsa.chars_to_quote)
@@ -521,7 +522,8 @@ def restore_set_fs_globals(target):
Log.FatalError("--never-drop-acls specified, but ACL support\n"
"disabled on destination filesystem")
- SetConnections.UpdateGlobal('preserve_hardlinks', target_fsa.hardlinks)
+ if Globals.preserve_hardlinks != 0:
+ SetConnections.UpdateGlobal('preserve_hardlinks', target_fsa.hardlinks)
SetConnections.UpdateGlobal('change_ownership', target_fsa.ownership)
if Globals.chars_to_quote is None: # otherwise already overridden
@@ -699,7 +701,8 @@ def single_set_fs_globals(rbdir):
update_triple(fsa.carbonfile,
('carbonfile_active', 'carbonfile_write', 'carbonfile_conn'))
- SetConnections.UpdateGlobal('preserve_hardlinks', fsa.hardlinks)
+ if Globals.preserve_hardlinks != 0:
+ SetConnections.UpdateGlobal('preserve_hardlinks', fsa.hardlinks)
SetConnections.UpdateGlobal('fsync_directories', fsa.fsync_dirs)
SetConnections.UpdateGlobal('change_ownership', fsa.ownership)
SetConnections.UpdateGlobal('chars_to_quote', fsa.chars_to_quote)
diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py
index bf458bd..0858887 100644
--- a/rdiff-backup/rdiff_backup/backup.py
+++ b/rdiff-backup/rdiff_backup/backup.py
@@ -497,7 +497,8 @@ class PatchITRB(rorpiter.ITRBranch):
assert diff_rorp.get_attached_filetype() == 'diff'
if robust.check_common_error(self.error_handler,
Rdiff.patch_local, (basis_rp, diff_rorp, new)) == 0: return 0
- if new.lstat(): rpath.copy_attribs(diff_rorp, new)
+ if new.lstat() and not diff_rorp.isflaglinked():
+ rpath.copy_attribs(diff_rorp, new)
return self.matches_cached_rorp(diff_rorp, new)
def matches_cached_rorp(self, diff_rorp, new_rp):