summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-06-07 13:42:31 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-06-18 19:11:43 +0200
commita0612263ec30e7cb81dfd4bbd9bc73798630474d (patch)
tree2ead0d8e18106c9d79441fc3caf4dadbf9860329 /src/lib/Bcfg2/Client/Tools
parent3005879f1cbbfef2ec438a82a69f2fa0907d2dcf (diff)
downloadbcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.tar.gz
bcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.tar.bz2
bcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.zip
Client/Tools/VCS: some simplyfications using dulwich api
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools')
-rw-r--r--src/lib/Bcfg2/Client/Tools/VCS.py20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/VCS.py b/src/lib/Bcfg2/Client/Tools/VCS.py
index 1f96ad5b4..4a30d9d90 100644
--- a/src/lib/Bcfg2/Client/Tools/VCS.py
+++ b/src/lib/Bcfg2/Client/Tools/VCS.py
@@ -98,18 +98,14 @@ class VCS(Bcfg2.Client.Tools.Tool):
destr.refs['HEAD'] = entry.get('revision')
dtree = destr['HEAD'].tree
- obj_store = destr.object_store
- for fname, mode, sha in obj_store.iter_tree_contents(dtree):
- fullpath = os.path.join(destname, fname)
- try:
- f = open(os.path.join(destname, fname), 'wb')
- except IOError:
- dir = os.path.split(fullpath)[0]
- os.makedirs(dir)
- f = open(os.path.join(destname, fname), 'wb')
- f.write(destr[sha].data)
- f.close()
- os.chmod(os.path.join(destname, fname), mode)
+ for fname, mode, sha in destr.object_store.iter_tree_contents(dtree):
+ full_path = os.path.join(destname, fname)
+ dulwich.file.ensure_dir_exists(os.path.dirname(full_path))
+
+ file = open(full_path, 'wb')
+ file.write(destr[sha].as_raw_string())
+ file.close()
+ os.chmod(full_path, mode)
return True
# FIXME: figure out how to write the git index properly