fetchGit: fix submodule output attribute

Before this change it would be false for all evaluations but the first.
Now it follows the input argument (as it should).
This commit is contained in:
Bjørn Forsman 2020-03-17 14:27:14 +01:00 committed by Julian Stecklina
parent 587e259bfd
commit 6864ad7cf5
2 changed files with 12 additions and 4 deletions

View file

@ -32,6 +32,9 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
std::optional<std::string> ref, std::string rev,
const std::string & name, bool fetchSubmodules)
{
GitInfo gitInfo;
gitInfo.submodules = fetchSubmodules;
if (evalSettings.pureEval && rev == "")
throw Error("in pure evaluation mode, 'fetchGit' requires a Git revision");
@ -49,7 +52,6 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
if (!clean) {
/* This is an unclean working tree. So copy all tracked files. */
GitInfo gitInfo;
gitInfo.rev = "0000000000000000000000000000000000000000";
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);
@ -141,7 +143,6 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
}
// FIXME: check whether rev is an ancestor of ref.
GitInfo gitInfo;
gitInfo.rev = rev != "" ? rev : chomp(readFile(localRefFile));
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);
@ -190,8 +191,6 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
std::filesystem::remove_all(p.path());
}
}
gitInfo.submodules = true;
} else {
auto source = sinkToSource([&](Sink & sink) {
RunOptions gitOptions("git", { "-C", cacheDir, "archive", gitInfo.rev });

View file

@ -61,6 +61,15 @@ r8=$(nix eval --raw "(builtins.fetchGit { url = $rootRepo; rev = \"$rev\"; submo
[[ $r6 == $r7 ]]
[[ $r7 == $r8 ]]
have_submodules=$(nix eval "(builtins.fetchGit { url = $rootRepo; rev = \"$rev\"; }).submodules")
[[ $have_submodules == false ]]
have_submodules=$(nix eval "(builtins.fetchGit { url = $rootRepo; rev = \"$rev\"; submodules = false; }).submodules")
[[ $have_submodules == false ]]
have_submodules=$(nix eval "(builtins.fetchGit { url = $rootRepo; rev = \"$rev\"; submodules = true; }).submodules")
[[ $have_submodules == true ]]
# The resulting store path cannot be the same.
[[ $pathWithoutSubmodules != $pathWithSubmodules ]]