diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2013-06-07 13:42:31 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-06-18 19:11:43 +0200 |
commit | a0612263ec30e7cb81dfd4bbd9bc73798630474d (patch) | |
tree | 2ead0d8e18106c9d79441fc3caf4dadbf9860329 | |
parent | 3005879f1cbbfef2ec438a82a69f2fa0907d2dcf (diff) | |
download | bcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.tar.gz bcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.tar.bz2 bcfg2-a0612263ec30e7cb81dfd4bbd9bc73798630474d.zip |
Client/Tools/VCS: some simplyfications using dulwich api
-rw-r--r-- | src/lib/Bcfg2/Client/Tools/VCS.py | 20 |
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 |