Galan Rémi <remi.galan-alfonso@xxxxxxxxxxxxxxxxxxxxxxx> writes: > +# from the todolist in stdin > +check_bad_cmd_and_sha () { > + git stripspace --strip-comments | > + while read -r command sha1 rest > + do > + case $command in > + ''|noop|x|"exec") > + ;; > + pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f) > + if test -z $sha1 > + then > + echo "$command $rest" >>"$todo".badsha > + else > + sha1_verif="$(git rev-parse --verify --quiet $sha1^{commit})" > + if test -z $sha1_verif > + then > + echo "$command $sha1 $rest" \ > + >>"$todo".badsha When you reach the right end of your screen because of indentation, cutting lines with \ is rarely the best option. Having 5 levels of indentation is a sign that you should make more functions. How about: check_bad_cmd_and_sha () { git stripspace --strip-comments | while read -r command sha1 rest do case $command in ''|noop|x|"exec") ;; pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f) check_commit_id $sha1 ;; *) record_bad_command $sha1 ;; esac } ? > + *) > + if test -z $sha1 > + then > + echo "$command" >>"$todo".badcmd Avoid echo on user-supplied data. > + else > + commit="$(git rev-list --oneline -1 --ignore-missing $sha1 2>/dev/null)" > + if test -z "$commit" > + then > + echo "$command $sha1 $rest" \ > + >>"$todo".badcmd > + else > + echo "$command $commit" >>"$todo".badcmd > + fi > + fi What are you trying to do here? It seems that you are trying to recover the line, but the line is your input, you shouldn't have to recompute it. Why isn't printf '%s %s %s' "$command" "$sha1" "$rest" sufficient in all cases? Maybe it would be better to read line by line (to avoid loosing whitespace information for example), like while read -r line do printf '%s' "$line" | read -r cmd sha1 rest case $sha1 in ... or maybe it's overkill. > + check_bad_cmd_and_sha <"$todo" > + > + if test -s "$todo".badsha > + then > + raiseError=t We usually don't use camelCase in shell-scripts. raise_error would be the usual way to spell in in Git's codebase. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- 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