nix-super/src/libfetchers
Maximilian Bosch f742438465
Merge legacy fetchGit-builtin with the generic fetchTree-function
The original idea was to implement a git-fetcher in Nix's core that
supports content hashes[1]. In #3549[2] it has been suggested to
actually use `fetchTree` for this since it's a fairly generic wrapper
over the new fetcher-API[3] and already supports content-hashes.

This patch implements a new git-fetcher based on `fetchTree` by
incorporating the following changes:

* Removed the original `fetchGit`-implementation and replaced it with an
  alias on the `fetchTree` implementation.

* Ensured that the `git`-fetcher from `libfetchers` always computes a
  content-hash and returns an "empty" revision on dirty trees (the
  latter one is needed to retain backwards-compatibility).

* The hash-mismatch error in the fetcher-API exits with code 102 as it
  usually happens whenever a hash-mismatch is detected by Nix.

* Removed the `flakes`-feature-flag: I didn't see a reason why this API
  is so tightly coupled to the flakes-API and at least `fetchGit` should
  remain usable without any feature-flags.

* It's only possible to specify a `narHash` for a `git`-tree if either a
  `ref` or a `rev` is given[4].

* It's now possible to specify an URL without a protocol. If it's missing,
  `file://` is automatically added as it was the case in the original
  `fetchGit`-implementation.

[1] https://github.com/NixOS/nix/pull/3216
[2] https://github.com/NixOS/nix/pull/3549#issuecomment-625194383
[3] https://github.com/NixOS/nix/pull/3459
[4] https://github.com/NixOS/nix/pull/3216#issuecomment-553956703
2020-07-28 00:44:39 +02:00
..
attrs.cc Remove TreeInfo 2020-05-30 00:44:11 +02:00
attrs.hh Remove TreeInfo 2020-05-30 00:44:11 +02:00
cache.cc Backport libfetchers from the flakes branch 2020-04-07 09:03:14 +02:00
cache.hh Shut up a clang warning 2020-07-03 14:50:07 +02:00
fetchers.cc Merge legacy fetchGit-builtin with the generic fetchTree-function 2020-07-28 00:44:39 +02:00
fetchers.hh Merge remote-tracking branch 'origin/master' into flakes 2020-06-17 10:26:52 +02:00
git.cc Support building flakes from a shallow Git repo 2020-07-01 14:57:59 +02:00
github.cc Fix gitlab-fetcher to obtain tags and branches 2020-07-13 19:22:59 +02:00
indirect.cc Remove TreeInfo 2020-05-30 00:44:11 +02:00
local.mk StorePath: Rewrite in C++ 2020-06-16 14:28:41 +02:00
mercurial.cc Revert the enum struct change 2020-06-18 22:11:26 +00:00
path.cc Revert the enum struct change 2020-06-18 22:11:26 +00:00
registry.cc Add --inputs-from to use flake inputs as registry entries 2020-07-01 20:25:13 +02:00
registry.hh Remove TreeInfo 2020-05-30 00:44:11 +02:00
tarball.cc Merge remote-tracking branch 'origin/master' into flakes 2020-06-26 08:46:46 +02:00