Ping Yin <pkufranky@xxxxxxxxx> writes: > This patch does the hard work of submodule summary and finally gives > output shown in last patch. > > Signed-off-by: Ping Yin <pkufranky@xxxxxxxxx> > --- > git-submodule.sh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 files changed, 69 insertions(+), 1 deletions(-) > > diff --git a/git-submodule.sh b/git-submodule.sh > index 8009a8d..8322771 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -380,7 +380,75 @@ cmd_summary() > # TODO: quote module names containing space or tab > test -n "$modules" && > echo "# Submodules modified: "$modules && > - echo "#" > + echo "#" && > + git diff $cache_option --raw $head -- $modules | > + grep '^:160000\|:[0-9]\+ 160000' | > + cut -c2- | Same issues as before. It might be worthwhile to write this part all in Perl, I suspect... > + while read mod_src mod_dst sha1_src sha1_dst status name > + do > + sha1_src=$(echo $sha1_src | sed -e 's/\.\.\.//') > + sha1_dst=$(echo $sha1_dst | sed -e 's/\.\.\.//') This is unneeded if you used the right tool, i.e. diff-index. > + check_src=$(echo $mod_src | grep 160000) > + check_dst=$(echo $mod_dst | grep 160000) Huh? Do you mean "test $mod_src = ':160000'" and such? > + errmsg= > + unfound_src= > + unfound_dst= Perhaps "missing" is a better word. > + test -z "$check_src" || > + GIT_DIR="$name/.git" git-rev-parse --verify $sha1_src^0 >/dev/null 2>&1 || > + unfound_src=t You do not want to do ^0; you will not be bind a non-commit in gitlink entry anyway. -- 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