Subject: Re: bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master

From: João Távora <[email-masked]>
Date: Mon, 10 Apr 2023 13:00:32 +0100

On Mon, Apr 10, 2023 at 12:56 PM Dmitry Gutov <[email-masked]> wrote:
>
> Hi!
>
> On 10/04/2023 11:17, João Távora wrote:
> > This is very odd then.  Why would project-files fail in the face of
> > (presumably) a perfectly well-behaved Git repository?
> >
> > Pasting the backtrace here for Dmitry to have a look.
> >
> > Test eglot-test-eclipse-connect backtrace:
> >    string-match("\0" nil 0)
> >    split-string(nil "\0" t)
> >    project--vc-list-files("/tmp/eglot--fixturernYTOR/project/" Git nil)
> >    #f(compiled-function (dir) #<bytecode -0xa5be45661654310>)("/tmp/eglot--fixturernYTOR/project/")
> >    mapcan(#f(compiled-function (dir) #<bytecode -0xa5be45661654310>) ("/tmp/eglot--fixturernYTOR/project/"))
> >    #f(compiled-function (project &optional dirs) #<bytecode 0x114f4cd06dfc2088>)((vc Git "/tmp/eglot--fixturernYTOR/project/"))
> >    apply(#f(compiled-function (project &optional dirs) #<bytecode 0x114f4cd06dfc2088>) (vc Git "/tmp/eglot--fixturernYTOR/project/") nil)
> >    project-files((vc Git "/tmp/eglot--fixturernYTOR/project/"))
> >
> > It would seem that the problem here is there are no files versioned yet,
> > so this expression in project--vc-list-files
> >
> >     (apply #'vc-git--run-command-string nil "ls-files" args)
> >
> > Returns nil.
> >
> > But I cannot reproduce this locally.
>
> I haven't been able to reproduce this locally either. If I just use a
> repo after 'git init', the return value of vc-git--run-command-string
> (inside project--vc-list-files) is an empty string, not nil.
>
> Could this be that the repo in the test isn't actually initialized? Or
> maybe there's something different in the test environment. My Git
> version is 2.37.2.

In the GitHub CI, Basil used both strategies, iow he invoked
"git init" in a directory that already had an empty ".git"
directory.  Maybe the Git version in GitHub's ubuntu machines
doesn't react to that the same way my Git version does (which is
to not be bothered by the existing directory, and do its work
all the same).

I don't think this is extremely important though.  It'll pop up
eventually if it is a real problem.

João