Re: [GSoC][PATCH v5 3/3] submodule: port subcommand foreach from shell to C
- From
Ramsay Jones <ramsay@ramsayjones.plus.com>
- Date
- May 27, 2017, 14:06 UTC
- Message-ID
- <ef0b2850-ad3b-e33d-37b7-ece9a305a7a4@ramsayjones.plus.com>
- In-Reply-To
- <41781ba1-2284-cc5d-8736-bb87d580f5bf@ramsayjones.plus.com>
On 27/05/17 02:20, Ramsay Jones wrote:
Show 16 quoted lines
> > > On 26/05/17 22:54, Johannes Sixt wrote: >> Am 26.05.2017 um 17:17 schrieb Prathamesh Chavan: >>> + argv_array_pushf(&cp.env_array, "path=%s", list_item->name); >> >> Not good! On Windows, environment variables are case insensitive. The environment variable "path" has a very special purpose, although it is generally spelled "PATH" (actually "Path" on Windows). >> >> Lowercase "path" may have worked as long as it was only used in a shell script (and perhaps only by lucky coincidence), but this I can pretty much guarantee to fail. (I haven't tested it, though.) >> >> The correct fix can only be to rename this variable here and in shell scripts that need the value that is set here. > > Yeah, I already pointed to commit 64394e3ae9 (but it seems not > to have registered!), but ... > > I tried provoking a failure on cygwin, and I couldn't get it to fail!
To be more explicit, last Sunday I hacked into t7407 to show an example failure on cygwin (see patch below), but it passes on both Linux (expected) and cygwin! :( Perhaps you can see what I'm doing wrong?
ATB, Ramsay Jones
-- >8 -- Date: Sun, 21 May 2017 16:23:58 +0100 Subject: [PATCH] submodule: foreach $path munging on cygwin
--- t/t7407-submodule-foreach.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh index 6ba5daf42..c2d66bab7 100755 --- a/t/t7407-submodule-foreach.sh +++ b/t/t7407-submodule-foreach.sh @@ -68,17 +68,36 @@ Entering 'sub3' $pwd/clone-foo3-sub3-$sub3sha1 EOF +cat >expect-func <<EOF +Entering 'sub1' +running from TRASH +path is <<sub1>> +Entering 'sub3' +running from TRASH +path is <<sub3>> +EOF + test_expect_success 'test basic "submodule foreach" usage' ' + PATH="$PWD:$PATH" && + write_script foreach-func <<-\EOF && + echo "running from TRASH" + echo "path is <<$1>>" + EOF git clone super clone && ( cd clone && git submodule update --init -- sub1 sub3 && git submodule foreach "echo \$toplevel-\$name-\$path-\$sha1" > ../actual && + git submodule foreach "foreach-func \$path" > ../actual-func1 && + git submodule foreach "export path; foreach-func \$path" > ../actual-func2 && git config foo.bar zar && git submodule foreach "git config --file \"\$toplevel/.git/config\" foo.bar" ) && + test_i18ncmp expect-func actual-func1 && + test_i18ncmp expect-func actual-func2 && test_i18ncmp expect actual ' +test_done cat >expect <<EOF Entering '../sub1'
-- 2.13.0