aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops/fetchGit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr/primops/fetchGit.cc')
-rw-r--r--src/libexpr/primops/fetchGit.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libexpr/primops/fetchGit.cc b/src/libexpr/primops/fetchGit.cc
index e92e06380..0d0b11958 100644
--- a/src/libexpr/primops/fetchGit.cc
+++ b/src/libexpr/primops/fetchGit.cc
@@ -23,7 +23,7 @@ struct GitInfo
};
GitInfo exportGit(ref<Store> store, const std::string & uri,
- std::experimental::optional<std::string> ref, const std::string & rev,
+ std::experimental::optional<std::string> ref, std::string rev,
const std::string & name)
{
if (!ref && rev == "" && hasPrefix(uri, "/") && pathExists(uri + "/.git")) {
@@ -68,6 +68,10 @@ GitInfo exportGit(ref<Store> store, const std::string & uri,
return gitInfo;
}
+
+ // 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 = "master"s;