"Spencer E. Olson" <olsonse@xxxxxxxxx> writes: > Previously, when a submodule was cloned in the same command execution, --rebase > or --merge would attempt to run (instead of and) before a checkout, resulting in > an empty working directory. This patch ignores --rebase or --merge for a > particular submodule when that submodule is newly cloned and instead simply > checks out the appropriate revision. Sorry, but I cannot parse the problem description, "(instead of and)" part. Why is it a better thing to do to ignore these options, instead of detecting the situation and error it out, saying "you are initially cloning, don't say --rebase"? > +# Test whether an element of the $3(=IFS) separated list $2 matches $1 > +# > +str_contains() > +{ > + if test -n "$3" > + then > + local IFS="$3" > + fi > + for i in $2 > + do > + if test "$i" = "$1" > + then > + echo "yes" > + return > + fi > + done > + echo "no" > + return > +} We don't allow bash-ism outside POSIX shell in our primary Porcelain set (the rule is looser for stuff in contrib/), so "local" is out. Here is how to write the above more concisely, efficiently and portably. case "$2;" in *";$1;"*) echo yes ;; *) echo no ;; esac The trailing ';' takes care of the case where cloned_modules has only one element, in which case you have ";name" in "$2". No need for a loop. > + cloned_modules= > ... > while read mode sha1 stage path > do > @@ -442,6 +464,7 @@ cmd_update() > if ! test -d "$path"/.git -o -f "$path"/.git > then > module_clone "$path" "$url" "$reference"|| exit > + cloned_modules="$cloned_modules;$name" > subsha1= -- 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