# [BUG] contrib/subtree: t/t7900-subtree.sh: test 21 fails when environment variable 'prefix' is set

5 messages from 2014-03-17 to 2014-03-17. Participants: Gilles Filippini, Jeff King, Eric Sunshine, Junio C Hamano.
Thread: https://gitlist.dev/t/36196

## Gilles Filippini, 2014-03-17 12:58

Subject: [BUG] contrib/subtree: t/t7900-subtree.sh: test 21 fails when environment variable 'prefix' is set
Message-ID: <5326F158.4050402@free.fr>
URL: https://gitlist.dev/e/5326F158.4050402%40free.fr

```
Hi,

Test 21 from contrib/subtree/t/t7900-subtree.sh fails when an
environment variable 'prefix' is set. For instance here is what happens
when prefix=/usr:

expecting success:
        echo "You must provide the --prefix option." > expected &&
        test_must_fail git subtree split > actual 2>&1 &&
	test_debug "printf 'expected: '" &&
        test_debug "cat expected" &&
	test_debug "printf 'actual: '" &&
        test_debug "cat actual" &&
        test_cmp expected actual &&
        rm -f expected actual

--- expected	2014-03-17 10:39:34.907594853 +0000
+++ actual	2014-03-17 10:39:34.979595322 +0000
@@ -1 +1,9 @@
-You must provide the --prefix option.
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
fatal: /usr: '/usr' is outside repository
+No new revisions were found
not ok 21 - Check that prefix argument is required for split


Thanks,

_g.

```

## Jeff King, 2014-03-17 19:59

Subject: [PATCH] subtree: initialize "prefix" variable
Message-ID: <20140317195946.GA29839@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20140317195946.GA29839%40sigill.intra.peff.net
In-Reply-To: <5326F158.4050402@free.fr>

```
On Mon, Mar 17, 2014 at 01:58:00PM +0100, Gilles Filippini wrote:

> Test 21 from contrib/subtree/t/t7900-subtree.sh fails when an
> environment variable 'prefix' is set. For instance here is what happens
> when prefix=/usr:

I think it just needs the patch below.

-- >8 --
We parse the "--prefix" command-line option into the
"$prefix" shell variable. However, if we do not see such an
option, the variable is left with whatever value it had in
the environment. We should initialize it to a known value,
like we do for other variables.

Signed-off-by: Jeff King <peff@peff.net>
---
I checked, and this looks like the only variable in this situation.

 contrib/subtree/git-subtree.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index dc59a91..db925ca 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -46,6 +46,7 @@ ignore_joins=
 annotate=
 squash=
 message=
+prefix=
 
 debug()
 {
-- 
1.9.0.532.gc4c322d

```

## Eric Sunshine, 2014-03-17 20:08

Subject: Re: [PATCH] subtree: initialize "prefix" variable
Message-ID: <CAPig+cSbi7X1z+u8EzXhdMb6_ENbLcTiHyXG0erfpCR=a5BEYQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcSbi7X1z%2Bu8EzXhdMb6_ENbLcTiHyXG0erfpCR%3Da5BEYQ%40mail.gmail.com
In-Reply-To: <20140317195946.GA29839@sigill.intra.peff.net>

```
On Mon, Mar 17, 2014 at 3:59 PM, Jeff King <peff@peff.net> wrote:
> On Mon, Mar 17, 2014 at 01:58:00PM +0100, Gilles Filippini wrote:
>
>> Test 21 from contrib/subtree/t/t7900-subtree.sh fails when an
>> environment variable 'prefix' is set. For instance here is what happens
>> when prefix=/usr:
>
> I think it just needs the patch below.

Gilles submitted this same patch [1] a couple weeks ago but it appears
to have been lost in the noise. Your commit message is a bit nicer.

[1]: http://thread.gmane.org/gmane.comp.version-control.git/243103/

> -- >8 --
> We parse the "--prefix" command-line option into the
> "$prefix" shell variable. However, if we do not see such an
> option, the variable is left with whatever value it had in
> the environment. We should initialize it to a known value,
> like we do for other variables.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> I checked, and this looks like the only variable in this situation.
>
>  contrib/subtree/git-subtree.sh | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> index dc59a91..db925ca 100755
> --- a/contrib/subtree/git-subtree.sh
> +++ b/contrib/subtree/git-subtree.sh
> @@ -46,6 +46,7 @@ ignore_joins=
>  annotate=
>  squash=
>  message=
> +prefix=
>
>  debug()
>  {
> --
> 1.9.0.532.gc4c322d

```

## Junio C Hamano, 2014-03-17 20:44

Subject: Re: [BUG] contrib/subtree: t/t7900-subtree.sh: test 21 fails when environment variable 'prefix' is set
Message-ID: <xmqqiorcd088.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqqiorcd088.fsf%40gitster.dls.corp.google.com
In-Reply-To: <5326F158.4050402@free.fr>

```
Gilles Filippini <gilles.filippini@free.fr> writes:

> Test 21 from contrib/subtree/t/t7900-subtree.sh fails when an
> environment variable 'prefix' is set. For instance here is what happens
> when prefix=/usr:
>
> expecting success:
>         echo "You must provide the --prefix option." > expected &&
>         test_must_fail git subtree split > actual 2>&1 &&
> 	test_debug "printf 'expected: '" &&
>         test_debug "cat expected" &&
> 	test_debug "printf 'actual: '" &&
>         test_debug "cat actual" &&
>         test_cmp expected actual &&
>         rm -f expected actual
>
> --- expected	2014-03-17 10:39:34.907594853 +0000
> +++ actual	2014-03-17 10:39:34.979595322 +0000
> @@ -1 +1,9 @@
> -You must provide the --prefix option.
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> fatal: /usr: '/usr' is outside repository
> +No new revisions were found
> not ok 21 - Check that prefix argument is required for split

Thanks.  Although I do not use nor touch git-subtree, I am
reasonably confident that this patch should fix it.

-- >8 --
Subject: subtree: initialise all variables to known state

Parsing the command line options may set prefix to the given value
with --prefix=value or an empty string with --no-prefix, but the
script forgets to protect against a stray environment variable.

Make sure all the variables that can be assigned in the command line
parsing are initialized to empty.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 contrib/subtree/git-subtree.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 7d7af03..90e0b7e 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -46,6 +46,7 @@ ignore_joins=
 annotate=
 squash=
 message=
+prefix=
 
 debug()
 {

```

## Jeff King, 2014-03-17 20:56

Subject: Re: [PATCH] subtree: initialize "prefix" variable
Message-ID: <20140317205616.GA18629@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20140317205616.GA18629%40sigill.intra.peff.net
In-Reply-To: <CAPig+cSbi7X1z+u8EzXhdMb6_ENbLcTiHyXG0erfpCR=a5BEYQ@mail.gmail.com>

```
On Mon, Mar 17, 2014 at 04:08:50PM -0400, Eric Sunshine wrote:

> On Mon, Mar 17, 2014 at 3:59 PM, Jeff King <peff@peff.net> wrote:
> > On Mon, Mar 17, 2014 at 01:58:00PM +0100, Gilles Filippini wrote:
> >
> >> Test 21 from contrib/subtree/t/t7900-subtree.sh fails when an
> >> environment variable 'prefix' is set. For instance here is what happens
> >> when prefix=/usr:
> >
> > I think it just needs the patch below.
> 
> Gilles submitted this same patch [1] a couple weeks ago but it appears
> to have been lost in the noise. Your commit message is a bit nicer.
> 
> [1]: http://thread.gmane.org/gmane.comp.version-control.git/243103/

Ah, sorry Gilles, I completely missed that. Junio, if you pick this up,
please feel free to use text from my commit message as you see fit, but
mark Gilles as the author.

Thanks, Eric, for pointing it out.

-Peff

```
