git-sh-setup.sh: make GIT_EDITOR/core.editor/VISUAL/EDITOR accept commands
[gitweb.git] / builtin-diff.c
index 4ba4d18f871122e0585ead1d09deb728ff518174..b48121e6e21ddd29fbb725c813aa22d0bcee2ea2 100644 (file)
@@ -32,7 +32,7 @@ static void stuff_change(struct diff_options *opt,
        struct diff_filespec *one, *two;
 
        if (!is_null_sha1(old_sha1) && !is_null_sha1(new_sha1) &&
-           !hashcmp(old_sha1, new_sha1))
+           !hashcmp(old_sha1, new_sha1) && (old_mode == new_mode))
                return;
 
        if (opt->reverse_diff) {
@@ -233,6 +233,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
                        die("diff_setup_done failed");
        }
        rev.diffopt.allow_external = 1;
+       rev.diffopt.recursive = 1;
 
        /* Do we have --cached and not have a pending object, then
         * default to HEAD by hand.  Eek.