- """Copy files names from sink_root + (dirname - sink_root) to target_root + (dirname - sink_root)"""
- if os.path.split(cookie.sink_root)[1]: # Should be tested with (C:\Cvs -> C:\)! (C:\Archives\MyDatas\UltraEdit -> C:\Archives\MyDatas) (Cvs -> "")! (Archives\MyDatas\UltraEdit -> Archives\MyDatas) (\Cvs -> \)! (\Archives\MyDatas\UltraEdit -> Archives\MyDatas)
- dirname = dirname[len(cookie.sink_root) + 1:]
- else:
- dirname = dirname[len(cookie.sink_root):]
- target_dir = os.path.join(cookie.target_root, dirname)
- if not os.path.isdir(target_dir):
- makeDir(cookie, target_dir)
- sink_dir = os.path.join(cookie.sink_root, dirname)
-
- filters = []
- if cookie.cvs_ignore:
- ignore = os.path.join(sink_dir, ".cvsignore")
- if os.path.isfile(ignore):
- filters = convertPatterns(ignore, "-")
- filters = filters + cookie.filters
-
- names_excluded = []
- if filters:
- # filter sink files (names):
- name_index = 0
- while name_index < len(names):
- name = names[name_index]
- path = os.path.join(dirname, name)
- path = convertPath(path)
- if os.path.isdir(os.path.join(sink_dir, name)):
- path = path + "/"
- for filter in filters:
- if re.search(filter[1], path, cookie.case_sensitivity):
- if filter[0] == '-':
- sink = os.path.join(sink_dir, name)
- if cookie.delete_from_source:
- if os.path.isfile(sink):
- removeFile(cookie, sink)
- elif os.path.isdir(sink):
- removeDir(cookie, sink)
- else:
- logError("Sink %s is neither a file nor a folder (skip removal)" % sink)
- names_excluded += [names[name_index]]
- del(names[name_index])
- name_index = name_index - 1
- break
- elif filter[0] == '+':
- break
- name_index = name_index + 1
-
- if cookie.delete and os.path.isdir(target_dir):
- # Delete files and folder in target not present in filtered sink.
- for name in os.listdir(target_dir):
- if not cookie.delete_excluded and name in names_excluded:
- continue
- if not name in names:
- target = os.path.join(target_dir, name)
- if os.path.isfile(target):
- removeFile(cookie, target)
- elif os.path.isdir(target):
- removeDir(cookie, target)
- else:
- pass
-
- for name in names:
- # Copy files and folder from sink to target.
- sink = os.path.join(sink_dir, name)
- #print sink
- target = os.path.join(target_dir, name)
- if os.path.exists(target):
- # When target already exit:
- if os.path.isfile(sink):
- if os.path.isfile(target):
- # file-file
- if shouldUpdate(cookie, sink, target):
- updateFile(cookie, sink, target)
- elif os.path.isdir(target):
- # file-folder
- removeDir(cookie, target)
- copyFile(cookie, sink, target)
- else:
- # file-???
- logError("Target %s is neither a file nor folder (skip update)" % sink)
-
- elif os.path.isdir(sink):
- if os.path.isfile(target):
- # folder-file
- removeFile(cookie, target)
- makeDir(cookie, target)
- else:
- # ???-xxx
- logError("Sink %s is neither a file nor a folder (skip update)" % sink)
-
- elif not cookie.existing:
- # When target dont exist:
- if os.path.isfile(sink):
- # file
- copyFile(cookie, sink, target)
- elif os.path.isdir(sink):
- # folder
- makeDir(cookie, target)
- else:
- logError("Sink %s is neither a file nor a folder (skip update)" % sink)
+ """Copy files names from sink_root + (dirname - sink_root) to target_root + (dirname - sink_root)"""
+ if os.path.split(cookie.sink_root)[
+ 1]: # Should be tested with (C:\Cvs -> C:\)! (C:\Archives\MyDatas\UltraEdit -> C:\Archives\MyDatas) (Cvs -> "")! (Archives\MyDatas\UltraEdit -> Archives\MyDatas) (\Cvs -> \)! (\Archives\MyDatas\UltraEdit -> Archives\MyDatas)
+ dirname = dirname[len(cookie.sink_root) + 1:]
+ else:
+ dirname = dirname[len(cookie.sink_root):]
+ target_dir = os.path.join(cookie.target_root, dirname)
+ if not os.path.isdir(target_dir):
+ makeDir(cookie, target_dir)
+ sink_dir = os.path.join(cookie.sink_root, dirname)
+
+ filters = []
+ if cookie.cvs_ignore:
+ ignore = os.path.join(sink_dir, ".cvsignore")
+ if os.path.isfile(ignore):
+ filters = convertPatterns(ignore, "-")
+ filters = filters + cookie.filters
+
+ names_excluded = []
+ if filters:
+ # filter sink files (names):
+ name_index = 0
+ while name_index < len(names):
+ name = names[name_index]
+ path = os.path.join(dirname, name)
+ path = convertPath(path)
+ if os.path.isdir(os.path.join(sink_dir, name)):
+ path = path + "/"
+ for filter in filters:
+ if re.search(filter[1], path, cookie.case_sensitivity):
+ if filter[0] == '-':
+ sink = os.path.join(sink_dir, name)
+ if cookie.delete_from_source:
+ if os.path.isfile(sink):
+ removeFile(cookie, sink)
+ elif os.path.isdir(sink):
+ removeDir(cookie, sink)
+ else:
+ logError("Sink %s is neither a file nor a folder (skip removal)" % sink)
+ names_excluded += [names[name_index]]
+ del (names[name_index])
+ name_index = name_index - 1
+ break
+ elif filter[0] == '+':
+ break
+ name_index = name_index + 1
+
+ if cookie.delete and os.path.isdir(target_dir):
+ # Delete files and folder in target not present in filtered sink.
+ for name in os.listdir(target_dir):
+ if not cookie.delete_excluded and name in names_excluded:
+ continue
+ if not name in names:
+ target = os.path.join(target_dir, name)
+ if os.path.isfile(target):
+ removeFile(cookie, target)
+ elif os.path.isdir(target):
+ removeDir(cookie, target)
+ else:
+ pass
+
+ for name in names:
+ # Copy files and folder from sink to target.
+ sink = os.path.join(sink_dir, name)
+ # print sink
+ target = os.path.join(target_dir, name)
+ if os.path.exists(target):
+ # When target already exit:
+ if os.path.isfile(sink):
+ if os.path.isfile(target):
+ # file-file
+ if shouldUpdate(cookie, sink, target):
+ updateFile(cookie, sink, target)
+ elif os.path.isdir(target):
+ # file-folder
+ removeDir(cookie, target)
+ copyFile(cookie, sink, target)
+ else:
+ # file-???
+ logError("Target %s is neither a file nor folder (skip update)" % sink)
+
+ elif os.path.isdir(sink):
+ if os.path.isfile(target):
+ # folder-file
+ removeFile(cookie, target)
+ makeDir(cookie, target)
+ else:
+ # ???-xxx
+ logError("Sink %s is neither a file nor a folder (skip update)" % sink)
+
+ elif not cookie.existing:
+ # When target dont exist:
+ if os.path.isfile(sink):
+ # file
+ copyFile(cookie, sink, target)
+ elif os.path.isdir(sink):
+ # folder
+ makeDir(cookie, target)
+ else:
+ logError("Sink %s is neither a file nor a folder (skip update)" % sink)