Add fetchgit builtin

The function builtins.fetchgit fetches Git repositories at evaluation
time, similar to builtins.fetchTarball. (Perhaps the name should be
changed, being confusing with respect to Nixpkgs's fetchgit function,
with works at build time.)

Example:

  (import (builtins.fetchgit git://github.com/NixOS/nixpkgs) {}).hello

or

  (import (builtins.fetchgit {
    url = git://github.com/NixOS/nixpkgs-channels;
    rev = "nixos-16.03";
  }) {}).hello

Note that the result does not contain a .git directory.
This commit is contained in:
Eelco Dolstra 2016-04-29 20:14:44 +02:00
parent 83258225e6
commit 38539b943a
2 changed files with 78 additions and 1 deletions

View file

@ -313,7 +313,7 @@ bool isUri(const string & s)
size_t pos = s.find("://");
if (pos == string::npos) return false;
string scheme(s, 0, pos);
return scheme == "http" || scheme == "https" || scheme == "file" || scheme == "channel";
return scheme == "http" || scheme == "https" || scheme == "file" || scheme == "channel" || scheme == "git";
}