Re: BUG in fetching non-checked out submodule

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux