emacs-magit: path error during commit

  • Done
  • quality assurance status badge
Details
3 participants
  • Christopher Howard
  • Kyle Meyer
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Christopher Howard
Severity
normal
C
C
Christopher Howard wrote on 28 Oct 2021 16:24
(name . Guix Bug Reports)(address . bug-guix@gnu.org)
068232bf9c2157d6b8636615b361398cac4470c1.camel@librehacker.com
Hello, for a long time I've struggled with getting a path error when I
try to do a commit using emacs-magit. Here is an example log copied from
the magit-process buffer:

```
0 git … add -u -- Genesis/gen_1.org
1 git … commit --
hint: Waiting for your editor to close the file...
Waiting for Emacs...
*ERROR*: Searching for program: No such file or directory, git
error: There was a problem with the editor
'/gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
--socket-name=/run/user/1000/emacs/server'.
Please supply the message using either -m or -F option.
```

I find this confusing because
- I can use magit to stage my commits
- In the Magit Group (M-x customize-group magit), the Magit Git
Executable is set to /home/christopher/.guix-profile/bin/git, and that
file does exist in my profile.
- /gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
also does exist
- Within emacs, I can run the shell command M-! git commit or M-! git
commit -m "..." and this works fine.

I suspect that emacs-magit might not be properly using the Magit Git
Executable path for this action, but haven't had a chance to look at the
source code yet. Probably this should be submitted as an issue or
support request to emacs-magit, but I have not done so since (on
principle) I do not have a github account, or use google groups.

Here is my system information;

```
christopher@nightshade ~$ neofetch --stdout
christopher@nightshade
----------------------
OS: Guix System 9aaf402a379b9ac9e4c3eee5b16f7496d7606e91 x86_64
Host: GA-880GM-UD2H
Kernel: 5.14.9-gnu
Uptime: 1 hour, 20 mins
Packages: 61 (guix-system), 155 (guix-user)
Shell: bash 5.0.16
Resolution: 1920x1200
DE: GNOME 3.34.5
Theme: Adwaita [GTK2/3]
Icons: Adwaita [GTK2/3]
Terminal: .gnome-terminal
CPU: AMD Athlon II X3 455 (3) @ 3.300GHz
GPU: NVIDIA GeForce 8400 GS Rev. 3
Memory: 1338MiB / 7893MiB
```

--
Christopher Howard
Gemini capsule: gemini://gem.librehacker.com
K
K
Kyle Meyer wrote on 26 Feb 2022 23:54
(name . Christopher Howard)(address . christopher@librehacker.com)(address . 51460@debbugs.gnu.org)
87czj92q8q.fsf@kyleam.com
Hello,

I came across this bug report when searching for something else. In
case it helps...

Christopher Howard writes:

Toggle quote (16 lines)
> Hello, for a long time I've struggled with getting a path error when I
> try to do a commit using emacs-magit. Here is an example log copied from
> the magit-process buffer:
>
> ```
> 0 git … add -u -- Genesis/gen_1.org
> 1 git … commit --
> hint: Waiting for your editor to close the file...
> Waiting for Emacs...
> *ERROR*: Searching for program: No such file or directory, git
> error: There was a problem with the editor
> '/gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
> --socket-name=/run/user/1000/emacs/server'.
> Please supply the message using either -m or -F option.
> ```

In Magit v3.3.0 and earlier, this error matches what you would see if
"git" isn't in $PATH for the editor that pops up. This is true even
when magit-git-executable points to an executable.

In the development version of Magit, this should no longer happen as of
77255776 (git-commit: Use magit-git-executable function if available,
2022-02-21). The issue that prompted that is
you say you don't use GitHub, but for others that may find that useful.)

(Based on what you say below, it sounds like "git" should be in $PATH,
so things aren't quite adding up still.)

Toggle quote (8 lines)
> I find this confusing because
> - I can use magit to stage my commits
> - In the Magit Group (M-x customize-group magit), the Magit Git
> Executable is set to /home/christopher/.guix-profile/bin/git, and that
> file does exist in my profile.
> - /gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
> also does exist

Yes, staging and most of things in Magit respect magit-git-executable.
As I mention above and you suspect in the quoted text below, that value
wasn't consulted by the code path relevant for the error above (in
git-commit.el).

Toggle quote (3 lines)
> - Within emacs, I can run the shell command M-! git commit or M-! git
> commit -m "..." and this works fine.

Hmm, so your main Emacs session has "git" on its exec-path. Perhaps
there's something going on with the with-editor launched editor. I'd
suggest looking at with-editor-debug and seeing if
/home/christopher/.guix-profile/bin is in the path it reports.

Toggle quote (4 lines)
> I suspect that emacs-magit might not be properly using the Magit Git
> Executable path for this action, but haven't had a chance to look at the
> source code yet.

Yep, that's it, and, as I mentioned above, should be fixed by 77255776
(git-commit: Use magit-git-executable function if available,
2022-02-21).
M
M
Maxim Cournoyer wrote on 12 Jul 2022 16:23
(name . Christopher Howard)(address . christopher@librehacker.com)(address . 51460@debbugs.gnu.org)
871quq8l4y.fsf@gmail.com
Hi Christopher,

Christopher Howard <christopher@librehacker.com> writes:

Toggle quote (16 lines)
> Hello, for a long time I've struggled with getting a path error when I
> try to do a commit using emacs-magit. Here is an example log copied from
> the magit-process buffer:
>
> ```
> 0 git … add -u -- Genesis/gen_1.org
> 1 git … commit --
> hint: Waiting for your editor to close the file...
> Waiting for Emacs...
> *ERROR*: Searching for program: No such file or directory, git
> error: There was a problem with the editor
> '/gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
> --socket-name=/run/user/1000/emacs/server'.
> Please supply the message using either -m or -F option.
> ```

One thing I can think about is that emacs-magit doesn't refer to git
directly:

$ guix gc -R /gnu/store/xd1bvmac1p4gjxb90m875r15xna52jyr-emacs-magit-3.3.0
/gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8
/gnu/store/vqdsrvs9jbn0ix2a58s99jwkh74124y5-coreutils-minimal-8.32
/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33
/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8
/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib
/gnu/store/hy6abswwv4d89zp464fw52z65fkzr7h5-perl-5.34.0
/gnu/store/xd1bvmac1p4gjxb90m875r15xna52jyr-emacs-magit-3.3.0

So it needs to be on your PATH. For me, the value returned by 'C-h v
magit-git-executable' is "git". One thing we could do is patch the
default value of this Elisp variable in our emacs-magit package to git,
so that users wouldn't need installing git manually.

Thanks,

Maxim
M
M
Maxim Cournoyer wrote on 4 Oct 2023 05:24
(name . Christopher Howard)(address . christopher@librehacker.com)(address . 51460-done@debbugs.gnu.org)
871qeb3w96.fsf@gmail.com
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (37 lines)
> Hi Christopher,
>
> Christopher Howard <christopher@librehacker.com> writes:
>
>> Hello, for a long time I've struggled with getting a path error when I
>> try to do a commit using emacs-magit. Here is an example log copied from
>> the magit-process buffer:
>>
>> ```
>> 0 git … add -u -- Genesis/gen_1.org
>> 1 git … commit --
>> hint: Waiting for your editor to close the file...
>> Waiting for Emacs...
>> *ERROR*: Searching for program: No such file or directory, git
>> error: There was a problem with the editor
>> '/gnu/store/dpky3z5844bclhswdk69z90vayy65b58-emacs-27.2/bin/emacsclient
>> --socket-name=/run/user/1000/emacs/server'.
>> Please supply the message using either -m or -F option.
>> ```
>
> One thing I can think about is that emacs-magit doesn't refer to git
> directly:
>
> $ guix gc -R /gnu/store/xd1bvmac1p4gjxb90m875r15xna52jyr-emacs-magit-3.3.0
> /gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8
> /gnu/store/vqdsrvs9jbn0ix2a58s99jwkh74124y5-coreutils-minimal-8.32
> /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33
> /gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8
> /gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib
> /gnu/store/hy6abswwv4d89zp464fw52z65fkzr7h5-perl-5.34.0
> /gnu/store/xd1bvmac1p4gjxb90m875r15xna52jyr-emacs-magit-3.3.0
>
> So it needs to be on your PATH. For me, the value returned by 'C-h v
> magit-git-executable' is "git". One thing we could do is patch the
> default value of this Elisp variable in our emacs-magit package to git,
> so that users wouldn't need installing git manually.

Commit b59b033af3957e0de9a44733e26cbcc7114a4dfb ("gnu: emacs-magit:
Substitute git executable path.") should prevent such a situation from
occurring.

--
Thanks,
Maxim
Closed
?