mirror of
https://github.com/NixOS/nix
synced 2025-06-24 13:51:16 +02:00
flakes: for detected git repository now assume shallow clones by default
Shallow clones are faster to access because we don't have to compute the revCount, which in sparse checkouts might not even exists. This is especially useful in combination with lazy trees in mind on large repository such as nixpkgs.
This commit is contained in:
parent
ed3e2a71ea
commit
09a7ce962d
2 changed files with 9 additions and 2 deletions
|
@ -168,8 +168,10 @@ std::pair<FlakeRef, std::string> parsePathFlakeRefWithFragment(
|
|||
parsedURL.query.insert_or_assign("dir", subdir);
|
||||
}
|
||||
|
||||
if (pathExists(flakeRoot + "/.git/shallow"))
|
||||
parsedURL.query.insert_or_assign("shallow", "1");
|
||||
if (!parsedURL.query.count("shallow")) {
|
||||
// We assume shallow by default, so we don't need to compute the revCount, which is an expensive operation.
|
||||
parsedURL.query.insert_or_assign("shallow", "1");
|
||||
}
|
||||
|
||||
return fromParsedURL(fetchSettings, std::move(parsedURL), isFlake);
|
||||
}
|
||||
|
|
|
@ -65,3 +65,8 @@ fi
|
|||
# Verify that we can shallow fetch the worktree
|
||||
git -C "$TEST_ROOT/shallow-worktree" rev-list --count HEAD >/dev/null
|
||||
nix eval --impure --raw --expr "(builtins.fetchGit { url = \"file://$TEST_ROOT/shallow-worktree\"; shallow = true; }).rev"
|
||||
|
||||
# Normal flake operation work because they use shallow by default
|
||||
pushd "$TEST_ROOT/shallow-worktree"
|
||||
nix flake metadata
|
||||
popd
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue