Re: [GSoC][PATCH v5 3/3] submodule: port subcommand foreach from shell to C
From: Ramsay Jones <hidden>
Date: 2017-05-27 14:07:00
Subsystem:
the rest · Maintainer:
Linus Torvalds
On 27/05/17 02:20, Ramsay Jones wrote:
On 26/05/17 22:54, Johannes Sixt wrote:quoted
Am 26.05.2017 um 17:17 schrieb Prathamesh Chavan:quoted
+ 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