Skip to content

Commit

Permalink
Merge branch 'km/bsd-shells'
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Junio C Hamano committed Mar 20, 2015
2 parents 89ebf97 + ce026cc commit ec0465a
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 8 deletions.
2 changes: 1 addition & 1 deletion builtin/help.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}

Expand Down
4 changes: 4 additions & 0 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 2 additions & 1 deletion git-instaweb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ start start the web server
restart restart the web server
"

SUBDIRECTORY_OK=Yes
. git-sh-setup

fqgitdir="$GIT_DIR"
Expand Down Expand Up @@ -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
Expand Down
4 changes: 0 additions & 4 deletions run-command.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
4 changes: 2 additions & 2 deletions t/t5528-push-default.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ 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"
}

# $1 = push.default value
# 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
}
Expand Down

0 comments on commit ec0465a

Please sign in to comment.