Am 10.06.19 um 19:21 schrieb Junio C Hamano: > Johannes Sixt <j6t@xxxxxxxx> writes: > >> + # here, $IFS is just a LF >> + for line in $f >> + do >> + mode=${line%% *} # 1st word >> + sha1=${line#"$mode "} >> + sha1=${sha1%% *} # 2nd word >> + case "${line#$mode $sha1 }" in # remainder >> + '1 '*) >> + base_mode=$mode >> + ;; >> + '2 '*) >> + local_mode=$mode local_sha1=$sha1 >> + ;; >> + '3 '*) >> + remote_mode=$mode remote_sha1=$sha1 >> + ;; >> + esac >> + done > > OK. $mode won't have any glob metacharacter, and there is only one > invocation of "ls-files -u", which is now two fewer processes ;-) I think it's better than that: there're about 9 fewer from the context that you didn't quote: - base_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==1) print $1;}') - local_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $1;}') - remote_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $1;}') and sometimes the 6 from below on top of that. But I won't insist in having counted correctly ;-) >> >> if is_submodule "$local_mode" || is_submodule "$remote_mode" >> then >> echo "Submodule merge conflict for '$MERGED':" >> - local_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $2;}') >> - remote_sha1=$(git ls-files -u -- "$MERGED" | awk '{if ($3==3) print $2;}') >> describe_file "$local_mode" "local" "$local_sha1" >> describe_file "$remote_mode" "remote" "$remote_sha1" >> resolve_submodule_merge