Hi Ralf, On 03.12.20 13:30, Ralf Thielow wrote:
It can be reproduced with the following sequence of commands: git init sub cd sub touch file git add file git commit -m "add file" cd .. git init main cd main git submodule add ../sub git submodule init git submodule update --checkout git submodule deinit -f sub/ git fetch --recurse-submodules
With git from master state the "git fetch --recurse-submodules" results in an infinite recurse call.
I translated your sequence into a bash script, which can then be easily converted into a test case for git. Problematic was the infinite recurse loop of the git fetch command, which I solved by grep'ing for the second recursion output and abort using -m1. Could you please confirm, that you see "passed" for the good git versions and "failed" for the bad ones?
#!/bin/bash testcase () { rm -Rf main sub && git init main && git init sub && touch sub/file && git -C sub add file && git -C sub commit -m "add file" && git -C sub rev-parse HEAD >expect && git -C main submodule add ../sub && git -C main submodule init && git -C main submodule update --checkout && git -C main submodule deinit -f sub && ! git -C main fetch --recurse-submodules |& grep -v -m1 "Fetching submodule sub$" && git -C main submodule status | sed -e "s/^-//" -e "s/ sub$//" >actual && cmp expect actual } if testcase then echo "passed" else echo "failed" fi -- --peter;