Describe the bug
When using builtins.fetchGit like below, Nix used to warn that the refname might be ambiguous but still did the right thing. With Nix 2.4 the warning is gone and Git fails to fetch the path leading to expressions that worked on 2.3 failing to build.
Steps To Reproduce
- Create a file
reproducer.nix:
# reproducer.nix
builtins.fetchGit {
ref = "db1442a0556c2b133627ffebf455a78a1ced64b9";
rev = "db1442a0556c2b133627ffebf455a78a1ced64b9";
url = "https://github.com/tmcw/leftpad";
}
- run
nix-build reproducer.nix on both Nix 2.3 and 2.4
- On 2.3 you should see
warning: refname 'db1442a0556c2b133627ffebf455a78a1ced64b9' is ambiguous.
Git normally never creates a ref that ends with 40 hex characters
because it will be ignored when you just specify 40-hex. These refs
may be created by mistake. For example,
git switch -c $br $(git rev-parse ...)
where "$br" is somehow empty and a 40-hex ref is created. Please
examine these refs and maybe delete them. Turn this message off by
running "git config advice.objectNameWarning false"
Regardless of the above warning fetching works. It doesn't produce a result symlink as builtin fetchers tend to not do that when invoked outside of a derivation.
- On 2.4 you will see
fatal: couldn't find remote ref refs/heads/db1442a0556c2b133627ffebf455a78a1ced64b9
error: program 'git' failed with exit code 128
(use '--show-trace' to show detailed location information)
Expected behavior
Nix should allow using the same fetchers as in previous versions even after upgrading even in the situation where the inputs to the fetchers were previously warned about.
Additional context
The problem was initially reported over here: nix-community/npmlock2nix#91
The way we are using builtins.fetchGit over there is super simple and pragmatic as NPM just throws some string at you. Sometimes it is a ref and in other scenarios a revision. I'll try to find a way to distinguish between them better and improve our code but IMO this bug is still valid as it breaks old expressions.
Describe the bug
When using
builtins.fetchGitlike below, Nix used to warn that the refname might be ambiguous but still did the right thing. With Nix 2.4 the warning is gone and Git fails to fetch the path leading to expressions that worked on 2.3 failing to build.Steps To Reproduce
reproducer.nix:nix-build reproducer.nixon both Nix 2.3 and 2.4Regardless of the above warning fetching works. It doesn't produce a
resultsymlink as builtin fetchers tend to not do that when invoked outside of a derivation.Expected behavior
Nix should allow using the same fetchers as in previous versions even after upgrading even in the situation where the inputs to the fetchers were previously warned about.
Additional context
The problem was initially reported over here: nix-community/npmlock2nix#91
The way we are using
builtins.fetchGitover there is super simple and pragmatic as NPM just throws some string at you. Sometimes it is a ref and in other scenarios a revision. I'll try to find a way to distinguish between them better and improve our code but IMO this bug is still valid as it breaks old expressions.