From: Junio C Hamano Date: Sat, 12 Jan 2008 08:18:19 GMT Subject: Re: [PATCH 1/5] git-submodule: New subcommand 'summary' (1) - code framework Message-ID: <7vmyrbv4ms.fsf@gitster.siamese.dyndns.org> In-Reply-To: Ping Yin writes: > + # get modified modules which have been checked out (i.e. cared by user) > + modules=$(git diff $cache_option --raw $head -- "$@" | > + grep '^:160000\|:000000 160000' | > + while read mod_src mod_dst sha1_src sha1_dst status name > + do You are listing paths that were already submodule in HEAD, or newly added submodule. What about a path that used to be a blob but is being made into submodule with the next commit (i.e. RHS is 160000 but LHS is not 000000)? > + # TODO: quote module names containing space or tab Yes, you would need to worry about *un*quoting them. > + test -n "$modules" && > + echo "# Submodules modified: "$modules && > + echo "#" > + cd "$cwd" Hmmmmmm.... > -case "$add,$init,$update,$status,$cached" in > -1,,,,) > +case "$add,$init,$update,$summary,$status,$cached" in > +1,,,,,) > module_add "$@" > ;; This is simply unsustainable. Please see the other thread with Imran M Yousuf regarding the command dispatcher. I think that should be the first thing to fix before doing any change.