summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-06-07 04:46:41 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-06-07 04:47:48 +0200
commitc30e56a92ab4d9e1e2dccf5fea2535951cebb633 (patch)
tree97f98e76c2eda3504d0496e21fbcad230d61fa2d
parent1213aa69ee3dbc2cc7bdb3faefe7ccc11651598c (diff)
downloadbcfg2-c30e56a92ab4d9e1e2dccf5fea2535951cebb633.tar.gz
bcfg2-c30e56a92ab4d9e1e2dccf5fea2535951cebb633.tar.bz2
bcfg2-c30e56a92ab4d9e1e2dccf5fea2535951cebb633.zip
Client/Tools/VCS: some simplyfications using dulwich api
-rw-r--r--debian/changelog3
-rw-r--r--src/lib/Client/Tools/VCS.py20
2 files changed, 10 insertions, 13 deletions
diff --git a/debian/changelog b/debian/changelog
index ee19daf29..05381d869 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,8 +2,9 @@ bcfg2 (1.2.3-17) unstable; urgency=low
* Client/Tools/VCS: create directory for repository
* Client/Tools/VCS: add always on top feature
+ * Client/Tools/VCS: some simplyfications using dulwich api
- -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Fri, 07 Jun 2013 04:33:54 +0200
+ -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Fri, 07 Jun 2013 04:47:39 +0200
bcfg2 (1.2.3-16) unstable; urgency=low
diff --git a/src/lib/Client/Tools/VCS.py b/src/lib/Client/Tools/VCS.py
index b61a39c7e..c9fa90a5d 100644
--- a/src/lib/Client/Tools/VCS.py
+++ b/src/lib/Client/Tools/VCS.py
@@ -102,18 +102,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))
+
+ with open(full_path, 'wb') as file:
+ #write blob's content to file
+ file.write(destr[sha].as_raw_string())
+ os.chmod(full_path, mode)
return True
# FIXME: figure out how to write the git index properly