# [PATCH] contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash

3 messages from 2013-05-20 to 2013-05-21. Participants: Dmitry Marakasov, Junio C Hamano, John Keeping.
Thread: https://gitlist.dev/t/33878

## Dmitry Marakasov, 2013-05-20 20:24

Subject: [PATCH] contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash
Message-ID: <20130520202434.GA3151@hades.panopticon>
URL: https://gitlist.dev/e/20130520202434.GA3151%40hades.panopticon

```
Use /bin/sh interpreter instead of /bin/bash for contrib/git-subtree:
it's required for systems which don't use bash by default (for example,
FreeBSD), while there seem to be no bashisms in the script (confirmed
by looking through the source and tesing subtree functionality with
FreeBSD's /bin/sh) to require specifically bash and not the generic
posix shell.

Signed-off-by: Dmitry Marakasov <amdmi3@amdmi3.ru>
---
 contrib/subtree/git-subtree.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 8a23f58..5701376 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 # git-subtree.sh: split/join git repositories in subdirectories of this one
 #
-- 
1.8.2.3

```

## Junio C Hamano, 2013-05-20 22:36

Subject: Re: [PATCH] contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash
Message-ID: <7vsj1hth11.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vsj1hth11.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20130520202434.GA3151@hades.panopticon>

```
Dmitry Marakasov <amdmi3@amdmi3.ru> writes:

> Use /bin/sh interpreter instead of /bin/bash for contrib/git-subtree:
> it's required for systems which don't use bash by default (for example,
> FreeBSD), while there seem to be no bashisms in the script (confirmed
> by looking through the source and tesing subtree functionality with
> FreeBSD's /bin/sh) to require specifically bash and not the generic
> posix shell.

Has anybody audited to make sure that the script itself is free of
bash-isms?

I somehow had an impression that in the past it was littered with
bash-isms like function local variables and array variables and
assumed that the #!/bin/bash was necessary.  I did a quick
eyeballing and did not see anything glaringly bash-only, but I may
have missed something (the coding style is so different from the
core part of Git Porcelains and distracting for me to efficiently
do a good job of scanning).

>
> Signed-off-by: Dmitry Marakasov <amdmi3@amdmi3.ru>
> ---
>  contrib/subtree/git-subtree.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> index 8a23f58..5701376 100755
> --- a/contrib/subtree/git-subtree.sh
> +++ b/contrib/subtree/git-subtree.sh
> @@ -1,4 +1,4 @@
> -#!/bin/bash
> +#!/bin/sh
>  #
>  # git-subtree.sh: split/join git repositories in subdirectories of this one
>  #

```

## John Keeping, 2013-05-21 07:55

Subject: Re: [PATCH] contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash
Message-ID: <20130521075505.GN27005@serenity.lan>
URL: https://gitlist.dev/e/20130521075505.GN27005%40serenity.lan
In-Reply-To: <7vsj1hth11.fsf@alter.siamese.dyndns.org>

```
On Mon, May 20, 2013 at 03:36:58PM -0700, Junio C Hamano wrote:
> Dmitry Marakasov <amdmi3@amdmi3.ru> writes:
> 
> > Use /bin/sh interpreter instead of /bin/bash for contrib/git-subtree:
> > it's required for systems which don't use bash by default (for example,
> > FreeBSD), while there seem to be no bashisms in the script (confirmed
> > by looking through the source and tesing subtree functionality with
> > FreeBSD's /bin/sh) to require specifically bash and not the generic
> > posix shell.
> 
> Has anybody audited to make sure that the script itself is free of
> bash-isms?
> 
> I somehow had an impression that in the past it was littered with
> bash-isms like function local variables and array variables and
> assumed that the #!/bin/bash was necessary.  I did a quick
> eyeballing and did not see anything glaringly bash-only, but I may
> have missed something (the coding style is so different from the
> core part of Git Porcelains and distracting for me to efficiently
> do a good job of scanning).

I ran the test suite with dash and everything passed.

checkbashisms doesn't find any problems either.

> >
> > Signed-off-by: Dmitry Marakasov <amdmi3@amdmi3.ru>
> > ---
> >  contrib/subtree/git-subtree.sh | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> > index 8a23f58..5701376 100755
> > --- a/contrib/subtree/git-subtree.sh
> > +++ b/contrib/subtree/git-subtree.sh
> > @@ -1,4 +1,4 @@
> > -#!/bin/bash
> > +#!/bin/sh
> >  #
> >  # git-subtree.sh: split/join git repositories in subdirectories of this one
> >  #

```
