diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-03-20 13:11:48 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-03-20 13:11:48 -0700 |
commit | ec0465ade87996214959a393239eec520daf92ea (patch) | |
tree | 714fd5f0ab87cba55d894a2031220ff7f5cf1aff | |
parent | 89ebf97c11a6ac2e20e0e527ae6791584d7ae7ba (diff) | |
parent | ce026cc7e2ff729c9809fef860cd696d1f7bb06c (diff) | |
download | git-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.c | 2 | ||||
-rw-r--r-- | git-compat-util.h | 4 | ||||
-rwxr-xr-x | git-instaweb.sh | 3 | ||||
-rw-r--r-- | run-command.c | 4 | ||||
-rwxr-xr-x | t/t5528-push-default.sh | 4 |
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 } |