aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libexpr/primops/fetchGit.cc3
-rw-r--r--src/libexpr/primops/fetchGit.hh1
-rw-r--r--src/libexpr/primops/flake.cc2
-rw-r--r--src/libexpr/primops/flakeref.cc2
4 files changed, 5 insertions, 3 deletions
diff --git a/src/libexpr/primops/fetchGit.cc b/src/libexpr/primops/fetchGit.cc
index 391308224..40975d8d8 100644
--- a/src/libexpr/primops/fetchGit.cc
+++ b/src/libexpr/primops/fetchGit.cc
@@ -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);
diff --git a/src/libexpr/primops/fetchGit.hh b/src/libexpr/primops/fetchGit.hh
index 60c439426..5937bdcc0 100644
--- a/src/libexpr/primops/fetchGit.hh
+++ b/src/libexpr/primops/fetchGit.hh
@@ -9,6 +9,7 @@ namespace nix {
struct GitInfo
{
Path storePath;
+ std::string ref;
std::string rev;
std::string shortRev;
std::optional<uint64_t> revCount;
diff --git a/src/libexpr/primops/flake.cc b/src/libexpr/primops/flake.cc
index 2415faf5e..1149efaac 100644
--- a/src/libexpr/primops/flake.cc
+++ b/src/libexpr/primops/flake.cc
@@ -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;
}
diff --git a/src/libexpr/primops/flakeref.cc b/src/libexpr/primops/flakeref.cc
index 973987469..97f31377a 100644
--- a/src/libexpr/primops/flakeref.cc
+++ b/src/libexpr/primops/flakeref.cc
@@ -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;
}