def _copy(self,source,target): is_win32 = (sys.platform == "win32") if is_win32 and os.path.exists(target) and target != source: target_old = get_backup_filename(target) really_rename(target,target_old) try: self._do_copy(source,target) except: really_rename(target_old,target) raise else: try: os.unlink(target_old) except EnvironmentError: pass else: target_old = None if os.path.isdir(target) and os.path.isfile(source): target_old = get_backup_filename(target) really_rename(target,target_old) elif os.path.isfile(target) and os.path.isdir(source): target_old = get_backup_filename(target) really_rename(target,target_old) self._do_copy(source,target) if target_old is not None: self._remove(target_old)
def _copy(self,source,target): source = source.encode(sys.getfilesystemencoding()) target = target.encode(sys.getfilesystemencoding()) if os.path.exists(target): target_old = get_backup_filename(target) MoveFileTransacted(target,target_old,None,None,1,self.trnid) self._do_copy(source,target) try: self._remove(target_old) except EnvironmentError: pass else: target_old = None if os.path.isdir(target): target_old = get_backup_filename(target) MoveFileTransacted(target,target_old,None,None,1,self.trnid) self._do_copy(source,target) if target_old is not None: self._remove(target_old)
def _move(self,source,target): source = source.encode(sys.getfilesystemencoding()) target = target.encode(sys.getfilesystemencoding()) if os.path.exists(target): target_old = get_backup_filename(target) MoveFileTransacted(target,target_old,None,None,1,self.trnid) MoveFileTransacted(source,target,None,None,1,self.trnid) try: self._remove(target_old) except EnvironmentError: pass else: self._create_parents(target) MoveFileTransacted(source,target,None,None,1,self.trnid)