gitFull does not contain `git send-email`

I have gitFull in my systemPackages, but when trying to git send-email it tells me that it does not know that command.

When I do nix-shell -p gitFull I can git send-email, though.

What is happening?

@musicmatze what version of NixOS are you using? I have gitFull in 18.09 and not experiencing this issue.

1 Like

18.09, had this issue before on 18.03.

That sounds like you have some other version of git installed and use that instead (because it comes first in PATH). You can check which version you’re using with which git. It may be helpful to resolve symlinks with

readlink -f $( which git )

which git gives /run/current-system/sw/bin/git which should be appropriate, right?

readlink -f $(which git) gives /nix/store/2mibc8qxhbh1k7r0p8a9r8c66h5xwspz-git-2.18.1/bin/git

nix-shell -p gitFull --run 'readlink -f $(which git)' gives /nix/store/l3r8r58j7n43mkkn9c66ryb7phmzjbv9-git-2.18.1/bin/git.

Try nix-env -q | grep git.

This will let you know if you have a nix-env-managed installation of git (which you likely have). If so, try nix-env -e git to get rid of it.

Nope, I do not have one of those:

$ nix-env -q | grep git

Have you run nix-channel --update as root and as your user? The channel versions might be different between those two as nix-shell uses the channels of your user.

I link my channel folder on my users on my personal systems to the system channel to have consistent versions whether I run stuff as root or not.

I suppose having git-annex in nix-env-managed packages can have the same effect as well (although I couldn’t reproduce locally). Try to remove it (or move to systemPackages).

I also do not have user channels.

I try to remove git-annex (as @pvgoran suggested) and we’ll see.

Update: Nope, removing git-annex does not help.

Now the fun starts:

I’ve put the following snippet into my configuration.nix / system packages:

  (pkgs.git.override {
    svnSupport       = false;
    guiSupport       = false;
    sendEmailSupport = true;
    withLibsecret    = true;

and after nixos-rebuild build I can ./result/sw/bin/git send-email and get

git: 'send-email' is not a git command. See 'git --help'.

Even more fun: After sudo nixos-rebuild testing the configuration, git send<tab> autocompletes to git send-email, but firing that command results in the same error message as posted above.

$ which git
$ readlink $(which git)
$ ls /nix/store/l3r8r58j7n43mkkn9c66ryb7phmzjbv9-git-2.18.1/libexec/git-core/git-send*
# ok so my version has git-send-email
# this is the same version that nix-shell gives you

# now testing the other version
$ nix-store --realize /nix/store/2mibc8qxhbh1k7r0p8a9r8c66h5xwspz-git-2.18.1
$ ls /nix/store/2mibc8qxhbh1k7r0p8a9r8c66h5xwspz-git-2.18.1/libexec/git-core/git-send*

So indeed your system git doesn’t contain git-send-email. Somehow two versions must be included and that one is taking priority. When building the system derivation there is probably some output that complains about the conflict.