From 7f9dcb6819489f076ac41fc6babcadab4df58330 Mon Sep 17 00:00:00 2001 From: bescoto Date: Sat, 26 Mar 2005 00:26:52 +0000 Subject: 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 --- rdiff-backup/CHANGELOG | 3 +++ rdiff-backup/rdiff_backup/Hardlink.py | 1 - rdiff-backup/rdiff_backup/Main.py | 9 ++++++--- rdiff-backup/rdiff_backup/backup.py | 3 ++- 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): -- cgit v1.2.1