diff --git a/software/erp5/software.cfg b/software/erp5/software.cfg
index 52cf96f7cd3cc289bac9ed6937abe3691401542c..5a2b59827d9ce14b64f277d75bebbc9236168907 100644
--- a/software/erp5/software.cfg
+++ b/software/erp5/software.cfg
@@ -29,8 +29,8 @@ stop-on-error = true
 branch = erp5-component
 revision =
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = ${git:location}/bin/git clone --branch ${:branch} --quiet http://git.erp5.org/repos/slapos.git ${:location} && if [ -n "${:revision}" ]; then cd ${:location} && ${git:location}/bin/git reset --quiet --hard ${:revision} ; fi
-update-command = cd ${:location} && GIT_COMMITTER_EMAIL=nobody@example.com GIT_AUTHOR_NAME=Nobody GIT_AUTHOR_EMAIL=nobody@example.com ${git:location}/bin/git pull --quiet && if [ -n "${:revision}" ]; then echo "Resetting." ; cd ${:location} && ${git:location}/bin/git reset --hard ${:revision} ; fi
+command = "{git:location}/bin/git" clone --branch "${:branch}" --quiet http://git.erp5.org/repos/slapos.git "${:location}" && if [ -n "${:revision}" ]; then cd "${:location}" && "${git:location}/bin/git" reset --quiet --hard "${:revision}" ; fi
+update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet && if [ -n "${:revision}" ]; then "${git:location}/bin/git" reset --hard "${:revision}"; else; "${git:location}/bin/git" reset --quiet --hard @{upstream} ; fi
 
 [check-recipe]
 recipe = plone.recipe.command
diff --git a/software/erp5scalabilitytestbed/software.cfg b/software/erp5scalabilitytestbed/software.cfg
index 1211dea4586a20c6c18e286ed4a26b557a96cf1a..2fc66960dc8e0d08c3cc825783187b4ca853d987 100644
--- a/software/erp5scalabilitytestbed/software.cfg
+++ b/software/erp5scalabilitytestbed/software.cfg
@@ -27,8 +27,8 @@ command = grep parts ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link
 recipe = plone.recipe.command
 stop-on-error = true
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = git clone -b erp5scalabilitytestbed --quiet http://git.erp5.org/repos/slapos.git ${:location}
-update-command = cd ${:location} && git pull --quiet
+command = git clone -b erp5scalabilitytestbed --quiet http://git.erp5.org/repos/slapos.git "${:location}"
+update-command = cd "${:location}" && git fetch --quiet && git reset --hard @{upstream}
 
 [eggs]
 dummy = ${slapos.cookbook:location}
diff --git a/software/erp5testnode/software.cfg b/software/erp5testnode/software.cfg
index b2451292acc5a68af8e1a475d9aed6a68ada47a4..a57282f5543b8d9b6f5fc1bd7ac886c2ee4fd1d0 100644
--- a/software/erp5testnode/software.cfg
+++ b/software/erp5testnode/software.cfg
@@ -60,8 +60,8 @@ unzip = true
 recipe = plone.recipe.command
 stop-on-error = true
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = ${git:location}/bin/git clone --quiet http://git.erp5.org/repos/slapos.git ${:location}
-update-command = cd ${:location} && ${git:location}/bin/git pull --quiet
+command = "${git:location}/bin/git" clone --quiet http://git.erp5.org/repos/slapos.git "${:location}"
+update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet && "${git:location}/bin/git" reset --hard @{upstream}
 
 [check-recipe]
 recipe = plone.recipe.command
diff --git a/software/nosqltestbed/software.cfg b/software/nosqltestbed/software.cfg
index 7b181e550671c57e9d5316ef4408911122b6d626..a248b7246babddbceb0bf96be8e461d75dadd594 100644
--- a/software/nosqltestbed/software.cfg
+++ b/software/nosqltestbed/software.cfg
@@ -38,8 +38,8 @@ command = grep parts ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link
 recipe = plone.recipe.command
 stop-on-error = true
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = ${git:location}/bin/git clone -b nosqltestbed --quiet http://git.erp5.org/repos/slapos.git ${:location}
-update-command = cd ${:location} && ${git:location}/bin/git pull --quiet
+command = "${git:location}/bin/git" clone -b nosqltestbed --quiet http://git.erp5.org/repos/slapos.git "${:location}"
+update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet && "${git:location}/bin/git" reset --hard @{upstream}
 
 [eggs]
 dummy = ${slapos.cookbook:location}
diff --git a/software/pulse/software.cfg b/software/pulse/software.cfg
index bbf849a3c55f00845b0a2afa44c52a6c517f4629..714b4748f8026d0f1144c5a7619d619dd419d9f6 100644
--- a/software/pulse/software.cfg
+++ b/software/pulse/software.cfg
@@ -98,8 +98,8 @@ git_param =--quiet -b pulse
 git = ${git:location}/bin/git
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
 stop-on-error = true
-command = ${:git} clone ${:git_param} http://git.erp5.org/repos/slapos.git ${:location} || exit 1;
-update-command = cd ${:location} && ${git:location}/bin/git pull --quiet
+command = "${:git}" clone ${:git_param} http://git.erp5.org/repos/slapos.git "${:location}" || exit 1;
+update-command = cd "${:location}" && "${:git}" fetch --quiet && "${:git}" reset --hard @{upstream}
 
 [instance-recipe-egg]
 recipe = zc.recipe.egg
diff --git a/software/testnode/software.cfg b/software/testnode/software.cfg
index 05ef7e54a02c66db2b08e11367ee5842fa9f05c8..8a183906e04ea186b96cfefbbdf37407d294b400 100644
--- a/software/testnode/software.cfg
+++ b/software/testnode/software.cfg
@@ -34,8 +34,8 @@ command = grep parts ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link
 recipe = plone.recipe.command
 stop-on-error = true
 location = ${buildout:parts-directory}/${:_buildout_section_name_}
-command = ${git:location}/bin/git clone -b testnode --quiet http://git.erp5.org/repos/slapos.git ${:location}
-update-command = cd ${:location} && ${git:location}/bin/git pull --quiet
+command = "${git:location}/bin/git" clone -b testnode --quiet http://git.erp5.org/repos/slapos.git "${:location}"
+update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet && "${git:location}/bin/git" reset --hard @{upstream}
 
 [template]
 recipe = slapos.recipe.template