As a later patch will modify submodules, if they are interesting we need to see if the submodule is clean in case they are interesting. If they are not interesting, then we do not care about the submodule keeping historic behavior. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- unpack-trees.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/unpack-trees.c b/unpack-trees.c index ea6bdd20e0..22e32eca96 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -9,6 +9,7 @@ #include "refs.h" #include "attr.h" #include "split-index.h" +#include "submodule.h" #include "dir.h" /* @@ -1361,15 +1362,15 @@ static void invalidate_ce_path(const struct cache_entry *ce, /* * Check that checking out ce->sha1 in subdir ce->name is not * going to overwrite any working files. - * - * Currently, git does not checkout subprojects during a superproject - * checkout, so it is not going to overwrite anything. */ static int verify_clean_submodule(const struct cache_entry *ce, enum unpack_trees_error_types error_type, struct unpack_trees_options *o) { - return 0; + if (!submodule_is_interesting(ce->name)) + return 0; + + return !is_submodule_modified(ce->name, 0); } static int verify_clean_subdirectory(const struct cache_entry *ce, -- 2.11.0.rc2.28.g2673dad