On Fri, Mar 25, 2016 at 9:43 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Stefan Beller <sbeller@xxxxxxxxxx> writes: > >> Recursing into submodules currently works by just calling >> (cd $submodule && eval <command>) for update, sync and status >> command. >> >> Say you have the following setup >> >> repo/ # a superproject repository >> repo/untracked/ # an untracked dir in repo/ >> repo/sub/ # a submodule >> repo/sub/subsub # a submodule of a submodule >> >> When being in repo/untracked/ and invoking "git submodule status" >> you would expect output like: >> >> repo/untracked/$ git submodule status --recursive >> <sha1> ../sub (version) >> <sha1> ../sub/subsub (<version>) >> >> We need to take into account that we are in the untracked/ dir, >> so we need to prepend ../ to the paths. By using relative_path >> to compute the prefix, we'll have that output. > > tests to demonstrate existing breakage and protect the fix from > future breakages would be needed, no? I realize this is worded slightly wrong. The bugs described in patch 1&2 would only occur if we'd apply patch 3 without them. So currently there is no bug. We currently do have tests for that, e.g. t7403, '"git submodule sync" should update submodule URLs - subdirectory' In patch 4 I added tests for "git submodule update" and enhanced tests for the sync command. > >> >> Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> >> --- >> git-submodule.sh | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/git-submodule.sh b/git-submodule.sh >> index 43c68de..536ba68 100755 >> --- a/git-submodule.sh >> +++ b/git-submodule.sh >> @@ -825,7 +825,7 @@ Maybe you want to use 'update --init'?")" >> if test -n "$recursive" >> then >> ( >> - prefix="$prefix$sm_path/" >> + prefix="$(relative_path $prefix$sm_path)/" >> clear_local_git_env >> cd "$sm_path" && >> eval cmd_update >> @@ -1233,13 +1233,13 @@ cmd_sync() >> then >> ( >> clear_local_git_env >> + prefix=$(relative_path "$prefix$sm_path/") >> cd "$sm_path" >> remote=$(get_default_remote) >> git config remote."$remote".url "$sub_origin_url" >> >> if test -n "$recursive" >> then >> - prefix="$prefix$sm_path/" >> eval cmd_sync >> fi >> ) -- 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