aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libfetchers/github.cc20
-rw-r--r--tests/nixos/github-flakes.nix7
2 files changed, 7 insertions, 20 deletions
diff --git a/src/libfetchers/github.cc b/src/libfetchers/github.cc
index 291f457f0..6f997885d 100644
--- a/src/libfetchers/github.cc
+++ b/src/libfetchers/github.cc
@@ -195,32 +195,12 @@ struct GitArchiveInputScheme : InputScheme
input.attrs.erase("ref");
input.attrs.insert_or_assign("rev", rev->gitRev());
- Attrs lockedAttrs({
- {"type", "git-tarball"},
- {"rev", rev->gitRev()},
- });
-
- if (auto res = getCache()->lookup(store, lockedAttrs)) {
- input.attrs.insert_or_assign("lastModified", getIntAttr(res->first, "lastModified"));
- return {std::move(res->second), input};
- }
-
auto url = getDownloadUrl(input);
auto result = downloadTarball(store, url.url, input.getName(), true, url.headers);
input.attrs.insert_or_assign("lastModified", uint64_t(result.lastModified));
- getCache()->add(
- store,
- lockedAttrs,
- {
- {"rev", rev->gitRev()},
- {"lastModified", uint64_t(result.lastModified)}
- },
- result.tree.storePath,
- true);
-
return {result.tree.storePath, input};
}
};
diff --git a/tests/nixos/github-flakes.nix b/tests/nixos/github-flakes.nix
index 4830be6ac..1954208b9 100644
--- a/tests/nixos/github-flakes.nix
+++ b/tests/nixos/github-flakes.nix
@@ -119,6 +119,9 @@ in
[ { urlPath = "/repos/NixOS/nixpkgs";
dir = nixpkgs-api;
}
+ { urlPath = "/repos/fork/nixpkgs";
+ dir = nixpkgs-api;
+ }
{ urlPath = "/repos/fancy-enterprise/private-flake";
dir = private-flake-api;
}
@@ -190,6 +193,10 @@ in
client.succeed("nix registry pin nixpkgs")
client.succeed("nix flake metadata nixpkgs --tarball-ttl 0 >&2")
+ # fetching a fork with the same commit ID should fail, even if the revision is cached
+ client.succeed("nix flake metadata github:NixOS/nixpkgs")
+ client.fail("nix flake metadata github:fork/nixpkgs")
+
# Shut down the web server. The flake should be cached on the client.
github.succeed("systemctl stop httpd.service")