fetchgit: support passing tree hashes as "rev"

This commit is contained in:
Tom McLaughlin 2020-11-23 11:08:07 -07:00
parent 4c9e23d6ad
commit 6779902b32

View File

@ -149,7 +149,19 @@ checkout_hash(){
fi
clean_git fetch -t ${builder:+--progress} origin || return 1
clean_git checkout -b "$branchName" "$hash" || return 1
local object_type=$(git cat-file -t "$hash")
if [[ "$object_type" == "commit" ]]; then
clean_git checkout -b "$branchName" "$hash" || return 1
elif [[ "$object_type" == "tree" ]]; then
clean_git config user.email "nix-prefetch-git@localhost"
clean_git config user.name "nix-prefetch-git"
local commit_id=$(git commit-tree "$hash" -m "Commit created from tree hash $hash")
clean_git checkout -b "$branchName" "$commit_id" || return 1
else
echo "Unrecognized git object type: $object_type"
return 1
fi
}
# Fetch only a branch/tag and checkout it.