Fix assertion failure in FlakeRef::to_string()

This commit is contained in:
Eelco Dolstra 2019-04-19 11:16:14 +02:00
parent 6e4210d8ce
commit 46cb15df9b
4 changed files with 5 additions and 3 deletions

View file

@ -39,6 +39,7 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
files. */
GitInfo gitInfo;
gitInfo.ref = "HEAD";
gitInfo.rev = "0000000000000000000000000000000000000000";
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);
@ -67,7 +68,6 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
// clean working tree, but no ref or rev specified. Use 'HEAD'.
rev = chomp(runProgram("git", true, { "-C", uri, "rev-parse", "HEAD" }));
ref = "HEAD"s;
}
if (!ref) ref = "HEAD"s;
@ -127,6 +127,7 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
// FIXME: check whether rev is an ancestor of ref.
GitInfo gitInfo;
gitInfo.ref = *ref;
gitInfo.rev = rev != "" ? rev : chomp(readFile(localRefFile));
gitInfo.shortRev = std::string(gitInfo.rev, 0, 7);

View file

@ -9,6 +9,7 @@ namespace nix {
struct GitInfo
{
Path storePath;
std::string ref;
std::string rev;
std::string shortRev;
std::optional<uint64_t> revCount;

View file

@ -237,8 +237,8 @@ static FlakeSourceInfo fetchFlake(EvalState & state, const FlakeRef flakeRef, bo
info.storePath = gitInfo.storePath;
info.rev = Hash(gitInfo.rev, htSHA1);
info.revCount = gitInfo.revCount;
info.flakeRef.ref = gitInfo.ref;
info.flakeRef.rev = info.rev;
// FIXME: ensure info.flakeRef.ref is set.
return info;
}

View file

@ -128,7 +128,7 @@ std::string FlakeRef::to_string() const
}
else if (auto refData = std::get_if<FlakeRef::IsGit>(&data)) {
assert(ref || !rev);
assert(!rev || ref);
string = refData->uri;
}