summaryrefslogtreecommitdiff
path: root/range-diff.c
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@intel.com>2018-10-24 19:46:17 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-10-25 05:47:53 (GMT)
commit0e573e8fcc395b5249c1c4713c2e385893c98b8c (patch)
treef58b15fa4230d818ec1ee0aa1adb6762901ca0a4 /range-diff.c
parent5a0cc8aca797dbd7d2be3b67458ff880ed45cddf (diff)
downloadgit-0e573e8fcc395b5249c1c4713c2e385893c98b8c.zip
git-0e573e8fcc395b5249c1c4713c2e385893c98b8c.tar.gz
git-0e573e8fcc395b5249c1c4713c2e385893c98b8c.tar.bz2
range-diff: allow to diff files regardless of submodule config
If we have `submodule.diff = log' in the configuration file or `--submodule=log' is given as argument, range-diff fails to compare both diffs and we only get the following output: Submodule a 0000000...0000000 (new submodule) Even if the repository doesn't have any submodule. That's because the mode in diff_filespec is not correct and when flushing the diff, down in builtin_diff() we will enter the condition: if (o->submodule_format == DIFF_SUBMODULE_LOG && (!one->mode || S_ISGITLINK(one->mode)) && (!two->mode || S_ISGITLINK(two->mode))) { show_submodule_summary(o, one->path ? one->path : two->path, &one->oid, &two->oid, two->dirty_submodule); return; It turns out that S_ISGITLINK will return true (mode == 0160000 here). Similar thing happens if submodule.diff is "diff". Do like it's done in grep.c when calling fill_filespec() and force it to be recognized as a file by adding S_IFREG to the mode. Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'range-diff.c')
-rw-r--r--range-diff.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/range-diff.c b/range-diff.c
index 60edb2f..bd8083f 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -354,7 +354,7 @@ static struct diff_filespec *get_filespec(const char *name, const char *p)
{
struct diff_filespec *spec = alloc_filespec(name);
- fill_filespec(spec, &null_oid, 0, 0644);
+ fill_filespec(spec, &null_oid, 0, 0100644);
spec->data = (char *)p;
spec->size = strlen(p);
spec->should_munmap = 0;