On Thu, Oct 11, 2018 at 12:42 AM Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > > > On Wed, Oct 10 2018, Lucas De Marchi wrote: > > > Do like it's done in grep so mode doesn't end up as > > 0160000, which means range-diff doesn't work if one has > > "submodule.diff = log" in the configuration. Without this > > while using range-diff I only get a > > > > Submodule a 0000000...0000000 (new submodule) > > I'm not familiar enough with this to tell what the real problem is > that's being solved from the commit message, but if it means that now > range-diff works in some configuration, presumably that can be reduced > to a simple set of commands that didn't work before but now does, and > therefore a test in t/t3206-range-diff.sh. $ git config --global diff.submodule log $ git range-diff This produces the output above $ git config --global diff.submodule short $ git range-diff This blocks forever in a wait4() call and prints this when terminated: fatal: exec 'diff': cd to 'a' failed: Not a directory Lucas De Marchi > > > instead of the diff between the revisions. > > > > Signed-off-by: Lucas De Marchi <lucas.demarchi@xxxxxxxxx> > > --- > > range-diff.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/range-diff.c b/range-diff.c > > index 60edb2f518..bd8083f2d1 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; -- Lucas De Marchi