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.
This commit is contained in:
parent
45fc7d4a35
commit
11df41199b
1 changed files with 2 additions and 1 deletions
|
@ -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")
|
||||
|
|
Loading…
Reference in a new issue