summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAtemu <atemu.main@gmail.com>2021-07-12 20:03:46 +0200
committerAtemu <atemu.main@gmail.com>2021-07-12 20:50:52 +0200
commit11df41199ba8a1497d8530dbf478ef10147a93bb (patch)
tree2248348f00c62fb59be25568d538afafc939875b
parent45fc7d4a35c5343e58541a7847f6415654ccbb37 (diff)
nix-prefetch-git: don't fetch everything when given a hash
It's hugely inefficient as we can't use shallow cloning (--depth=1). This has been tested and adapted for quite a few hosts fetchgit is used on in Nixpkgs. For those where fetching the hash directly doesn't work (most notably git.savannah.gnu.org), we simply fall back to the old method.
-rwxr-xr-xpkgs/build-support/fetchgit/nix-prefetch-git3
1 files changed, 2 insertions, 1 deletions
diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git
index 661e0d674c58..8110d670e41c 100755
--- a/pkgs/build-support/fetchgit/nix-prefetch-git
+++ b/pkgs/build-support/fetchgit/nix-prefetch-git
@@ -140,7 +140,7 @@ url_to_name(){
fi
}
-# Fetch everything and checkout the right sha1
+# Fetch and checkout the right sha1
checkout_hash(){
local hash="$1"
local ref="$2"
@@ -149,6 +149,7 @@ checkout_hash(){
hash=$(hash_from_ref "$ref")
fi
+ clean_git fetch ${builder:+--progress} --depth=1 origin "$hash" || \
clean_git fetch -t ${builder:+--progress} origin || return 1
local object_type=$(git cat-file -t "$hash")