aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2016-11-17 23:34:27 +0100
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2016-11-17 23:34:27 +0100
commit0db557041908b483ec77439bb5e1db982464d327 (patch)
tree9aa25afb81bc6a9545723aa93e839767ef0989b9
parentfc52952914747dc937c805baa211a251a795b847 (diff)
downloadblogc-0db557041908b483ec77439bb5e1db982464d327.tar.gz
blogc-0db557041908b483ec77439bb5e1db982464d327.tar.bz2
blogc-0db557041908b483ec77439bb5e1db982464d327.zip
git-receiver: when rebuilding, change to repo dir asap
-rw-r--r--src/blogc-git-receiver/pre-receive.c5
-rwxr-xr-xtests/blogc-git-receiver/check_pre_receive.sh.in22
2 files changed, 22 insertions, 5 deletions
diff --git a/src/blogc-git-receiver/pre-receive.c b/src/blogc-git-receiver/pre-receive.c
index 99e15dd..954c379 100644
--- a/src/blogc-git-receiver/pre-receive.c
+++ b/src/blogc-git-receiver/pre-receive.c
@@ -104,6 +104,11 @@ bgr_pre_receive_hook(int argc, char *argv[])
return 1;
}
char *repo_dir = dirname(real_hooks_dir);
+ if (0 != chdir(repo_dir)) {
+ fprintf(stderr, "error: failed to change to repository root\n");
+ free(real_hooks_dir);
+ return 1;
+ }
char *htdocs_sym = bc_strdup_printf("%s/htdocs", repo_dir);
free(real_hooks_dir);
if (0 != access(htdocs_sym, F_OK)) {
diff --git a/tests/blogc-git-receiver/check_pre_receive.sh.in b/tests/blogc-git-receiver/check_pre_receive.sh.in
index b9aec45..d70e04a 100755
--- a/tests/blogc-git-receiver/check_pre_receive.sh.in
+++ b/tests/blogc-git-receiver/check_pre_receive.sh.in
@@ -151,12 +151,24 @@ HOME="${TEMP}" ${TESTS_ENVIRONMENT} ./hooks/pre-receive 2>&1 | tee "${TEMP}/outp
[[ "${DEST}" != "$(readlink htdocs)" ]]
[[ ! -e "${DEST}" ]]
-DEST="$(readlink htdocs)"
-HOME="${TEMP}" ${TESTS_ENVIRONMENT} ./hooks/pre-receive 2>&1 | tee "${TEMP}/output.txt"
+cd ..
-[[ -h htdocs ]]
-[[ "$(cat htdocs/foo.txt)" == "lol" ]]
-[[ "${DEST}" != "$(readlink htdocs)" ]]
+DEST="$(readlink foo3.git/htdocs)"
+HOME="${TEMP}" ${TESTS_ENVIRONMENT} ./foo3.git/hooks/pre-receive 2>&1 | tee "${TEMP}/output.txt"
+
+[[ -h foo3.git/htdocs ]]
+[[ "$(cat foo3.git/htdocs/foo.txt)" == "lol" ]]
+[[ "${DEST}" != "$(readlink foo3.git/htdocs)" ]]
+[[ ! -e "${DEST}" ]]
+
+cd ..
+
+DEST="$(readlink repos/foo3.git/htdocs)"
+HOME="${TEMP}" ${TESTS_ENVIRONMENT} ./repos/foo3.git/hooks/pre-receive 2>&1 | tee "${TEMP}/output.txt"
+
+[[ -h repos/foo3.git/htdocs ]]
+[[ "$(cat repos/foo3.git/htdocs/foo.txt)" == "lol" ]]
+[[ "${DEST}" != "$(readlink repos/foo3.git/htdocs)" ]]
[[ ! -e "${DEST}" ]]
rm "${TEMP}/output.txt"