bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#61817: 30.0.50; Project.el finds incorrect project roots in git work


From: Dmitry Gutov
Subject: bug#61817: 30.0.50; Project.el finds incorrect project roots in git worktrees
Date: Sun, 26 Feb 2023 20:03:08 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1

On 26/02/2023 18:23, Arthur Miller wrote:
What actions trigger the bug:

Two different, unrelated repositories with emacs source code tree. My tree(s)
looks like this:

~/repos/emsrc/emacs/
~/repos/enacs-tests/emacs/

Where in both the last "emacs/" is the Emacs source tree from main git
repository.

~/repos/emsrc/emacs/  is the one I use for my "everyday" Emacs. I build Emacs 
now
and then once in a week or few weeks with a script, and I make each build in its
own our-of-source worktree. The other one is one where I used to do some tests.
It shouldn't matter since all worktrees are contained withing parent directory,
which in one case is "emsrc" and in the other case "emacs-tests", but for some
reason project.el sees the wrong one.

1. create two parent folders each one containing a copy of emacs sources
1. create out of source worktree for Emacs source under one of those
2. navigate to the worktree/lisp/progmodes
3. run M-: (project-known-project-roots)

In my Emacs, I am in my currently installed emacs worktree, where git root is

~/repos/emsrc/emacs but project.el returns ("~/repos/emacs-tests/emacs/") as a
result

What does (project-root (project-current)) return? And which dirs you are testing it in?

I am not chasing the bug, but I don't see much code in project.el related
to worktrees.

Normally, there shouldn't be any need to handle worktree specially: it contains a file called .git at the top which can serve as a marker just fine.

The only place I see them mentioned is about submodules.I
personally have used this one for quite some time, and it seems to correctly
handle worktrees for me:

You code looks like it can return the "actual git root" that can be a directory residing somewhere else than the current directory tree. Is that what you wanted? Off the top of my head, that should break the 'project-files' method.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]