Kevin Ballard wrote: > When performing a recursive status or update, any argments with whitespace > would be split along that whitespace when passed to the recursive invocation > of the update or status command. > > This is caused by the special handling that sh provides to the $@ variable. > Status and update stored "$@" into a separate variable, and passed that > variable to the recursive invocation. Unfortunately, the special handling > afforded to $@ isn't given to this new variable, and word-breaking occurs > along whitespace boundaries. > > We can use $(git rev-parse --sq-quote "$@") to produce a string containing > a quoted version of all given args, suitable for passing to eval. We then > recurse using something like `eval cmd_status "$orig_args"` instead of the > former `cmd_status $orig_args`. This preserves all arguments exactly as > given to the initial invocation of the command. Probably it is because it is late hear, but I find myself intimidated by the block of explanatory text. Maybe an example like Environment variables only hold strings, not lists of parameters, so $orig_args after orig_args="$@" fails to remember where each parameter starts and ends, if some include whitespace. So git submodule update \ --reference='/var/lib/common objects.git' \ --recursive becomes git submodule update --reference=/var/lib/common \ objects.git --recursive in the inner repositories. Use "git rev-parse --sq-quote" to save parameters in quoted form ready for evaluation by the shell, avoiding this problem. would be simpler? > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -374,7 +374,7 @@ cmd_init() > cmd_update() > { > # parse $args after "submodule ... update". > - orig_args="$@" > + orig_args="$(git rev-parse --sq-quote "$@")" No quotes are needed around the RHS to an assignment like this. Anyway, Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx> Thanks. -- 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