On Thu, Mar 24, 2016 at 4:34 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > One of the first things that happens in most submodule sub commands is > > git submodule--helper list --prefix "$wt_prefix" > > Currently the passed --prefix is used for doing path calculation > as if we were in that path relative to the repository root, which is > why we need to pass "$wt_prefix". The more common way in Git however > would be to use > > git -C "$wt_prefix" submodule--helper list > > which I want to change later. That way however does not just > pass the prefix into the submodule command, but also changes > into that directory. > > 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 in repo/untracked/ and invoking "git submodule status --recursive", > the recursed instance of the latter version for listing submodules would > try to change into the directory repo/sub/untracked, which is a bug. > This happens as we cd into the submodule in git-submodule.sh without > clearing wt_prefix, which is the assumed relative path inside the working > directory. > > Most times that directory doesn't exist and we error out. Fix this bug > by clearing wt_prefix, such that any recursive instances of will assume > to operate from the respective root of the respective submodule. > > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > git-submodule.sh | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/git-submodule.sh b/git-submodule.sh > index 536ba68..6b18a03 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -827,6 +827,7 @@ Maybe you want to use 'update --init'?")" > ( > prefix="$(relative_path $prefix$sm_path)/" > clear_local_git_env > + wt_prefix= > cd "$sm_path" && > eval cmd_update > ) > @@ -1159,6 +1160,7 @@ cmd_status() > ( > prefix="$displaypath/" > clear_local_git_env > + wt_prefix= > cd "$sm_path" && > eval cmd_status > ) || > @@ -1240,6 +1242,7 @@ cmd_sync() > > if test -n "$recursive" > then > + wt_prefix= And here I think I see why we moved the original prefix code up some. This looks good. > eval cmd_sync > fi > ) > -- > 2.8.0.rc4.10.g52f3f33 > Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx> Regards, Jake -- 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