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 ;-) > > 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