Stefan Beller <sbeller@xxxxxxxxxx> writes: > The new test demonstrates a failure in the code prior to this patch. > Instead of getting the expected > Submodule 'submodule' (${pwd}/submodule) registered for path '../super/submodule' > the `super` directory is omitted and you get > Submodule 'submodule' (${pwd}/submodule) registered for path '../submodule' > instead. Same "is this about test?" comment applies here. > That happens because the prefix is ignored in `git submodule add`, probably > because that function itself cannot recurse; "probably"??? > it may however called by Probably "be" needs to be somewhere on this line. > recursive instances of `git submodule update`, so we need to respect the > `prefix`. > > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > git-submodule.sh | 2 +- > t/t7406-submodule-update.sh | 33 +++++++++++++++++++++++++++++++++ > 2 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/git-submodule.sh b/git-submodule.sh > index 2838069..fdb5fbd 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -474,7 +474,7 @@ cmd_init() > die_if_unmatched "$mode" > name=$(git submodule--helper name "$sm_path") || exit > > - displaypath=$(relative_path "$sm_path") > + displaypath=$(relative_path "$prefix$sm_path") > > # Copy url setting when it is not set yet > if test -z "$(git config "submodule.$name.url")" > diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh > index 68ea31d..9a4ba41 100755 > --- a/t/t7406-submodule-update.sh > +++ b/t/t7406-submodule-update.sh > @@ -63,6 +63,10 @@ test_expect_success 'setup a submodule tree' ' > git submodule add ../none none && > test_tick && > git commit -m "none" > + ) && > + git clone . recursivesuper && > + ( cd recursivesuper > + git submodule add ../super super > ) > ' > > @@ -95,6 +99,35 @@ test_expect_success 'submodule update from subdirectory' ' > ) > ' > > +supersha1=$(cd super && git rev-parse HEAD) Perhaps "git -C super rev-parse HEAD"? > +test_expect_success 'submodule update --init --recursive from subdirectory' ' > + git -C recursivesuper/super reset --hard HEAD^ && > + (cd recursivesuper && > + mkdir tmp && > + cd tmp && > + git submodule update --init --recursive ../super >../../actual > + ) && > + test_cmp expect actual > +' > + > apos="'"; > test_expect_success 'submodule update does not fetch already present commits' ' > (cd submodule && -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html