[dak/master] dak/export.py, daklib/policy.py: ignore existing files
The same upstream tarball can be used by multiple uploads so we have to
ignore already existing files.
---
dak/export.py | 2 +-
daklib/policy.py | 18 +++++++++++++-----
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/dak/export.py b/dak/export.py
index 8545167..841e336 100644
--- a/dak/export.py
+++ b/dak/export.py
@@ -69,7 +69,7 @@ def main(argv=None):
for u in uploads:
print "Processing {0}...".format(u.changes.changesname)
- UploadCopy(u).export(directory, symlink=symlink)
+ UploadCopy(u).export(directory, symlink=symlink, ignore_existing=True)
if __name__ == '__main__':
main()
diff --git a/daklib/policy.py b/daklib/policy.py
index eef18a4..cfb0e1d 100644
--- a/daklib/policy.py
+++ b/daklib/policy.py
@@ -49,7 +49,7 @@ class UploadCopy(object):
self.directory = None
self.upload = upload
- def export(self, directory, mode=None, symlink=True):
+ def export(self, directory, mode=None, symlink=True, ignore_existing=False):
"""export a copy of the upload
@type directory: str
@@ -60,6 +60,9 @@ class UploadCopy(object):
@type symlink: bool
@param symlink: use symlinks instead of copying the files
+
+ @type ignore_existing: bool
+ @param ignore_existing: ignore already existing files
"""
with FilesystemTransaction() as fs:
source = self.upload.source
@@ -69,22 +72,27 @@ class UploadCopy(object):
for dsc_file in source.srcfiles:
f = dsc_file.poolfile
dst = os.path.join(directory, os.path.basename(f.filename))
- fs.copy(f.fullpath, dst, mode=mode, symlink=symlink)
+ if not os.path.exists(dst) or not ignore_existing:
+ fs.copy(f.fullpath, dst, mode=mode, symlink=symlink)
+
for binary in self.upload.binaries:
f = binary.poolfile
dst = os.path.join(directory, os.path.basename(f.filename))
- fs.copy(f.fullpath, dst, mode=mode, symlink=symlink)
+ if not os.path.exists(dst) or not ignore_existing:
+ fs.copy(f.fullpath, dst, mode=mode, symlink=symlink)
# copy byhand files
for byhand in self.upload.byhand:
src = os.path.join(queue.path, byhand.filename)
dst = os.path.join(directory, byhand.filename)
- fs.copy(src, dst, mode=mode, symlink=symlink)
+ if not os.path.exists(dst) or not ignore_existing:
+ fs.copy(src, dst, mode=mode, symlink=symlink)
# copy .changes
src = os.path.join(queue.path, self.upload.changes.changesname)
dst = os.path.join(directory, self.upload.changes.changesname)
- fs.copy(src, dst, mode=mode, symlink=symlink)
+ if not os.path.exists(dst) or not ignore_existing:
+ fs.copy(src, dst, mode=mode, symlink=symlink)
def __enter__(self):
assert self.directory is None
--
1.7.2.5
Reply to: