aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops/fetchGit.cc
AgeCommit message (Collapse)Author
2019-05-15Make flakes work with 'nix build --store ...'Eelco Dolstra
It was getting confused between logical and real store paths. Also, make fetchGit and fetchMercurial update allowedPaths properly. (Maybe the evaluator, rather than the caller of the evaluator, should apply toRealPath(), but that's a bigger change.)
2019-04-19fetchGit: Return revCount for dirty working treesEelco Dolstra
2019-04-19exportGit: Don't clone local repositoriesEelco Dolstra
This ensures that commands like 'nix flake info /my/nixpkgs' don't copy a gigabyte of crap to ~/.cache/nix. Fixes #60.
2019-04-19Clean up exportGit argument handlingEelco Dolstra
2019-04-19Fix assertion failure in FlakeRef::to_string()Eelco Dolstra
2019-04-08Add path flakeref variantEelco Dolstra
Unlike file://<path>, this allows the path to be a dirty Git tree, so nix build /path/to/flake:attr is a convenient way to test building a local flake.
2019-02-12Enforce use of immutable flakes in pure modeEelco Dolstra
... plus a temporary hack to allow impure flakes at top-level for the default installation source.
2019-02-12Improve flake referencesEelco Dolstra
2019-02-12experimental/optional -> optionalEelco Dolstra
2019-02-11Initial flake supportEelco Dolstra
2018-11-20fetchGit: Drop unnecessary localRefEelco Dolstra
2018-11-20Merge branch 'better-git-cache' of https://github.com/graham-at-target/nixEelco Dolstra
2018-09-01fetchGit/fetchMercurial: Don't absolutize pathsEelco Dolstra
This is already done by coerceToString(), provided that the argument is a path (e.g. 'fetchGit ./bla'). It fixes the handling of URLs like git@github.com:owner/repo.git. It breaks 'fetchGit "./bla"', but that was never intended to work anyway and is inconsistent with other builtin functions (e.g. 'readFile "./bla"' fails).
2018-08-17fetchGit: use a better caching schemeGraham Christensen
The current usage technically works by putting multiple different repos in to the same git directory. However, it is very slow as Git tries very hard to find common commits between the two repositories. If the two repositories are large (like Nixpkgs and another long-running project,) it is maddeningly slow. This change busts the cache for existing deployments, but users will be promptly repaid in per-repository performance.
2018-05-30Move evaluator-specific settings out of libstoreEelco Dolstra
2018-03-19Shut up signedness warningEelco Dolstra
2018-03-13fetchGit: Fix debug messageGuillaume Maudoux
2018-02-28fetchGit: use "HEAD" as default refWill Dietz
2018-01-16Add pure evaluation modeEelco Dolstra
In this mode, the following restrictions apply: * The builtins currentTime, currentSystem and storePath throw an error. * $NIX_PATH and -I are ignored. * fetchGit and fetchMercurial require a revision hash. * fetchurl and fetchTarball require a sha256 attribute. * No file system access is allowed outside of the paths returned by fetch{Git,Mercurial,url,Tarball}. Thus 'nix build -f ./foo.nix' is not allowed. Thus, the evaluation result is completely reproducible from the command line arguments. E.g. nix build --pure-eval '( let nix = fetchGit { url = https://github.com/NixOS/nixpkgs.git; rev = "9c927de4b179a6dd210dd88d34bda8af4b575680"; }; nixpkgs = fetchGit { url = https://github.com/NixOS/nixpkgs.git; ref = "release-17.09"; rev = "66b4de79e3841530e6d9c6baf98702aa1f7124e4"; }; in (import (nix + "/release.nix") { inherit nix nixpkgs; }).build.x86_64-linux )' The goal is to enable completely reproducible and traceable evaluation. For example, a NixOS configuration could be fully described by a single Git commit hash. 'nixos-rebuild' would do something like nix build --pure-eval '( (import (fetchGit { url = file:///my-nixos-config; rev = "..."; })).system ') where the Git repository /my-nixos-config would use further fetchGit calls or Git externals to fetch Nixpkgs and whatever other dependencies it has. Either way, the commit hash would uniquely identify the NixOS configuration and allow it to reproduced.
2018-01-09fetchGit: fix creation of uninitialized cache dir, let git create itWill Dietz
fetchGit test (as modified in previous commit) now passes.
2017-12-22fetchGit: Fix handling of local repo when not using 'master' branchWill Dietz
Add tests checking this behavior.
2017-11-24fetchGit: Ignore tarballTtl if rev is set and not in the repo.Shea Levy
Fixes #1697.
2017-11-21fetchGit/fetchMercurial: Fix directory inclusion checkEelco Dolstra
E.g. the existence of .gitignore would cause .git to be included.
2017-11-03fetchgit.cc -> fetchGit.ccEelco Dolstra