From: Junio C Hamano Date: Wed, 14 May 2008 18:28:48 GMT Subject: Re: [PATCH 1/3] diff options: Introduce --ignore-submodules Message-ID: <7vbq38oi3j.fsf@gitster.siamese.dyndns.org> In-Reply-To: Johannes Schindelin writes: > @@ -3355,6 +3357,9 @@ void diff_addremove(struct diff_options *options, > char concatpath[PATH_MAX]; > struct diff_filespec *one, *two; > > + if (DIFF_OPT_TST(options, IGNORE_SUBMODULES) && S_ISGITLINK(mode)) > + return; > + > /* This may look odd, but it is a preparation for > * feeding "there are unchanged files which should > * not produce diffs, but when you are doing copy So both removal and addition of a submodule is an uninteresting event. > @@ -3399,6 +3404,10 @@ void diff_change(struct diff_options *options, > char concatpath[PATH_MAX]; > struct diff_filespec *one, *two; > > + if (DIFF_OPT_TST(options, IGNORE_SUBMODULES) && S_ISGITLINK(old_mode) > + && S_ISGITLINK(new_mode)) > + return; And a submodule changing from revision A to B is uninteresting. Is it interesting if something that used to be a blob turns into a submodule, or vice versa? The code says it is, but I think it would be more convenient to treat it as a removal of blob and addition of a submodule.