From 6cf7c6a6b0d06d88f2f27daae4febbbdc757841b Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Fri, 3 Nov 2017 13:52:32 +0100
Subject: [PATCH] Remove git:// support in NIX_PATH

This didn't support specifying a revision/branch, and was restricted
to git:// URIs (since https:// or ssh:// would be ambiguous).
---
 doc/manual/release-notes/rl-1.12.xml |  7 -------
 src/libexpr/parser.y                 |  7 +------
 src/libexpr/primops/fetchgit.cc      |  9 ++++++++-
 src/libexpr/primops/fetchgit.hh      | 24 ------------------------
 4 files changed, 9 insertions(+), 38 deletions(-)
 delete mode 100644 src/libexpr/primops/fetchgit.hh

diff --git a/doc/manual/release-notes/rl-1.12.xml b/doc/manual/release-notes/rl-1.12.xml
index 7c9a8b75e..29943e3e6 100644
--- a/doc/manual/release-notes/rl-1.12.xml
+++ b/doc/manual/release-notes/rl-1.12.xml
@@ -188,13 +188,6 @@
     (38539b943a060d9cdfc24d6e5d997c0885b8aa2f)</para>
   </listitem>
 
-  <listitem>
-    <para>Git repositories can now be specified in the Nix search
-    path,
-    e.g. <literal>nixpkgs=git://github.com/NixOS/nixpkgs</literal>.
-    (d8bf0d4859e28ddd23401fbe89f4e528aa09ddb3)</para>
-  </listitem>
-
   <listitem>
     <para><literal>&lt;nix/fetchurl.nix&gt;</literal> now uses the
     content-addressable tarball cache at
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y
index 7e63dc89f..ef11dd609 100644
--- a/src/libexpr/parser.y
+++ b/src/libexpr/parser.y
@@ -523,7 +523,6 @@ formal
 #include "eval.hh"
 #include "download.hh"
 #include "store-api.hh"
-#include "primops/fetchgit.hh"
 
 
 namespace nix {
@@ -665,11 +664,7 @@ std::pair<bool, std::string> EvalState::resolveSearchPathElem(const SearchPathEl
 
     if (isUri(elem.second)) {
         try {
-            if (hasPrefix(elem.second, "git://") || hasSuffix(elem.second, ".git"))
-                // FIXME: support specifying revision/branch
-                res = { true, exportGit(store, elem.second).storePath };
-            else
-                res = { true, getDownloader()->downloadCached(store, elem.second, true) };
+            res = { true, getDownloader()->downloadCached(store, elem.second, true) };
         } catch (DownloadError & e) {
             printError(format("warning: Nix search path entry '%1%' cannot be downloaded, ignoring") % elem.second);
             res = { false, "" };
diff --git a/src/libexpr/primops/fetchgit.cc b/src/libexpr/primops/fetchgit.cc
index baa48f642..bca68ed72 100644
--- a/src/libexpr/primops/fetchgit.cc
+++ b/src/libexpr/primops/fetchgit.cc
@@ -1,4 +1,3 @@
-#include "fetchgit.hh"
 #include "primops.hh"
 #include "eval-inline.hh"
 #include "download.hh"
@@ -15,6 +14,14 @@ using namespace std::string_literals;
 
 namespace nix {
 
+struct GitInfo
+{
+    Path storePath;
+    std::string rev;
+    std::string shortRev;
+    uint64_t revCount = 0;
+};
+
 GitInfo exportGit(ref<Store> store, const std::string & uri,
     std::experimental::optional<std::string> ref, const std::string & rev,
     const std::string & name)
diff --git a/src/libexpr/primops/fetchgit.hh b/src/libexpr/primops/fetchgit.hh
deleted file mode 100644
index 818ab7102..000000000
--- a/src/libexpr/primops/fetchgit.hh
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <string>
-
-#include "util.hh"
-
-namespace nix {
-
-class Store;
-
-struct GitInfo
-{
-    Path storePath;
-    std::string rev;
-    std::string shortRev;
-    uint64_t revCount = 0;
-};
-
-GitInfo exportGit(ref<Store> store, const std::string & uri,
-    std::experimental::optional<std::string> ref = {},
-    const std::string & rev = "",
-    const std::string & name = "");
-
-}
-- 
GitLab