diff options
-rw-r--r-- | src/libfetchers/github.cc | 20 | ||||
-rw-r--r-- | tests/nixos/github-flakes.nix | 7 |
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") |