forked from lix-project/lix
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:
parent
587e259bfd
commit
6864ad7cf5
|
@ -32,6 +32,9 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
|
||||||
std::optional<std::string> ref, std::string rev,
|
std::optional<std::string> ref, std::string rev,
|
||||||
const std::string & name, bool fetchSubmodules)
|
const std::string & name, bool fetchSubmodules)
|
||||||
{
|
{
|
||||||
|
GitInfo gitInfo;
|
||||||
|
gitInfo.submodules = fetchSubmodules;
|
||||||
|
|
||||||
if (evalSettings.pureEval && rev == "")
|
if (evalSettings.pureEval && rev == "")
|
||||||
throw Error("in pure evaluation mode, 'fetchGit' requires a Git revision");
|
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) {
|
if (!clean) {
|
||||||
|
|
||||||
/* This is an unclean working tree. So copy all tracked files. */
|
/* This is an unclean working tree. So copy all tracked files. */
|
||||||
GitInfo gitInfo;
|
|
||||||
gitInfo.rev = "0000000000000000000000000000000000000000";
|
gitInfo.rev = "0000000000000000000000000000000000000000";
|
||||||
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);
|
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.
|
// FIXME: check whether rev is an ancestor of ref.
|
||||||
GitInfo gitInfo;
|
|
||||||
gitInfo.rev = rev != "" ? rev : chomp(readFile(localRefFile));
|
gitInfo.rev = rev != "" ? rev : chomp(readFile(localRefFile));
|
||||||
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);
|
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());
|
std::filesystem::remove_all(p.path());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gitInfo.submodules = true;
|
|
||||||
} else {
|
} else {
|
||||||
auto source = sinkToSource([&](Sink & sink) {
|
auto source = sinkToSource([&](Sink & sink) {
|
||||||
RunOptions gitOptions("git", { "-C", cacheDir, "archive", gitInfo.rev });
|
RunOptions gitOptions("git", { "-C", cacheDir, "archive", gitInfo.rev });
|
||||||
|
|
|
@ -61,6 +61,15 @@ r8=$(nix eval --raw "(builtins.fetchGit { url = $rootRepo; rev = \"$rev\"; submo
|
||||||
[[ $r6 == $r7 ]]
|
[[ $r6 == $r7 ]]
|
||||||
[[ $r7 == $r8 ]]
|
[[ $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.
|
# The resulting store path cannot be the same.
|
||||||
[[ $pathWithoutSubmodules != $pathWithSubmodules ]]
|
[[ $pathWithoutSubmodules != $pathWithSubmodules ]]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue