summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-03-20 13:11:48 -0700
committerJunio C Hamano <gitster@pobox.com>2015-03-20 13:11:48 -0700
commitec0465ade87996214959a393239eec520daf92ea (patch)
tree714fd5f0ab87cba55d894a2031220ff7f5cf1aff
parent89ebf97c11a6ac2e20e0e527ae6791584d7ae7ba (diff)
parentce026cc7e2ff729c9809fef860cd696d1f7bb06c (diff)
downloadgit-ec0465ade87996214959a393239eec520daf92ea.tar.gz
Merge branch 'km/bsd-shells'
Portability fixes and workarounds for shell scripts have been added to help BSD-derived systems. * km/bsd-shells: t5528: do not fail with FreeBSD shell help.c: use SHELL_PATH instead of hard-coded "/bin/sh" git-compat-util.h: move SHELL_PATH default into header git-instaweb: use @SHELL_PATH@ instead of /bin/sh git-instaweb: allow running in a working tree subdirectory
-rw-r--r--builtin/help.c2
-rw-r--r--git-compat-util.h4
-rwxr-xr-xgit-instaweb.sh3
-rw-r--r--run-command.c4
-rwxr-xr-xt/t5528-push-default.sh4
5 files changed, 9 insertions, 8 deletions
diff --git a/builtin/help.c b/builtin/help.c
index 6133fe496b..2ae8a1e985 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -171,7 +171,7 @@ static void exec_man_cmd(const char *cmd, const char *page)
{
struct strbuf shell_cmd = STRBUF_INIT;
strbuf_addf(&shell_cmd, "%s %s", cmd, page);
- execl("/bin/sh", "sh", "-c", shell_cmd.buf, (char *)NULL);
+ execl(SHELL_PATH, SHELL_PATH, "-c", shell_cmd.buf, (char *)NULL);
warning(_("failed to exec '%s': %s"), cmd, strerror(errno));
}
diff --git a/git-compat-util.h b/git-compat-util.h
index a3095be962..fbfd10dadc 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -876,4 +876,8 @@ struct tm *git_gmtime_r(const time_t *, struct tm *);
#define USE_PARENS_AROUND_GETTEXT_N 1
#endif
+#ifndef SHELL_PATH
+# define SHELL_PATH "/bin/sh"
+#endif
+
#endif
diff --git a/git-instaweb.sh b/git-instaweb.sh
index 513efa662e..47e38f34c3 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -20,6 +20,7 @@ start start the web server
restart restart the web server
"
+SUBDIRECTORY_OK=Yes
. git-sh-setup
fqgitdir="$GIT_DIR"
@@ -204,7 +205,7 @@ webrick_conf () {
# actual gitweb.cgi using a shell script to force it
wrapper="$fqgitdir/gitweb/$httpd/wrapper.sh"
cat > "$wrapper" <<EOF
-#!/bin/sh
+#!@SHELL_PATH@
# we use this shell script wrapper around the real gitweb.cgi since
# there appears to be no other way to pass arbitrary environment variables
# into the CGI process
diff --git a/run-command.c b/run-command.c
index 0b432cc971..3afb124c79 100644
--- a/run-command.c
+++ b/run-command.c
@@ -4,10 +4,6 @@
#include "sigchain.h"
#include "argv-array.h"
-#ifndef SHELL_PATH
-# define SHELL_PATH "/bin/sh"
-#endif
-
void child_process_init(struct child_process *child)
{
memset(child, 0, sizeof(*child));
diff --git a/t/t5528-push-default.sh b/t/t5528-push-default.sh
index cc7451908b..73f4bb6346 100755
--- a/t/t5528-push-default.sh
+++ b/t/t5528-push-default.sh
@@ -26,7 +26,7 @@ check_pushed_commit () {
# $2 = expected target branch for the push
# $3 = [optional] repo to check for actual output (repo1 by default)
test_push_success () {
- git ${1:+-c push.default="$1"} push &&
+ git ${1:+-c} ${1:+push.default="$1"} push &&
check_pushed_commit HEAD "$2" "$3"
}
@@ -34,7 +34,7 @@ test_push_success () {
# check that push fails and does not modify any remote branch
test_push_failure () {
git --git-dir=repo1 log --no-walk --format='%h %s' --all >expect &&
- test_must_fail git ${1:+-c push.default="$1"} push &&
+ test_must_fail git ${1:+-c} ${1:+push.default="$1"} push &&
git --git-dir=repo1 log --no-walk --format='%h %s' --all >actual &&
test_cmp expect actual
}