Skip to content

Commit

Permalink
Merge branch 'bc/submodule-foreach-stdin-fix-1.7.4'
Browse files Browse the repository at this point in the history
* bc/submodule-foreach-stdin-fix-1.7.4:
  git-submodule.sh: preserve stdin for the command spawned by foreach
  t/t7407: demonstrate that the command called by 'submodule foreach' loses stdin

Conflicts:
	git-submodule.sh
  • Loading branch information
Junio C Hamano committed Jul 13, 2011
2 parents 0e8a23b + 4dca1aa commit 13ac90a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
6 changes: 5 additions & 1 deletion git-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,10 @@ cmd_foreach()

toplevel=$(pwd)

# dup stdin so that it can be restored when running the external
# command in the subshell (and a recursive call to this function)
exec 3<&0

module_list |
while read mode sha1 stage path
do
Expand All @@ -320,7 +324,7 @@ cmd_foreach()
then
cmd_foreach "--recursive" "$@"
fi
) ||
) <&3 3<&- ||
die "$(eval_gettext "Stopping at '\$path'; script returned non-zero status.")"
fi
done
Expand Down
18 changes: 18 additions & 0 deletions t/t7407-submodule-foreach.sh
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,22 @@ test_expect_success 'use "update --recursive nested1" to checkout all submodules
)
'

test_expect_success 'command passed to foreach retains notion of stdin' '
(
cd super &&
git submodule foreach echo success >../expected &&
yes | git submodule foreach "read y && test \"x\$y\" = xy && echo success" >../actual
) &&
test_cmp expected actual
'

test_expect_success 'command passed to foreach --recursive retains notion of stdin' '
(
cd clone2 &&
git submodule foreach --recursive echo success >../expected &&
yes | git submodule foreach --recursive "read y && test \"x\$y\" = xy && echo success" >../actual
) &&
test_cmp expected actual
'

test_done

0 comments on commit 13ac90a

Please sign in to comment.