From 699ade0c04f7cb6e80ef73391034f6d3b78ebb92 Mon Sep 17 00:00:00 2001 From: Matthew Richardson Date: Thu, 17 Oct 2024 19:02:46 +0100 Subject: [PATCH] Use treeless clone to do a 'shallow' clone preserving metadata for version.py --- bootstrap-salt.sh | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 4c6b289bb..3d36708a8 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -2097,21 +2097,19 @@ __git_clone_and_checkout() { fi if [ "$__SHALLOW_CLONE" -eq $BS_TRUE ]; then - # Let's try shallow cloning to speed up. - # Test for "--single-branch" option introduced in git 1.7.10, the minimal version of git where the shallow + # Let's try 'treeless' cloning to speed up. Treeless cloning omits trees and blobs ('files') + # but includes metadata (commit history, tags, branches etc. + # Test for "--filter" option introduced in git 2.19, the minimal version of git where the treeless # cloning we need actually works - if [ "$(git clone 2>&1 | grep 'single-branch')" != "" ]; then - # The "--single-branch" option is supported, attempt shallow cloning + if [ "$(git clone 2>&1 | grep 'filter')" != "" ]; then + # The "--filter" option is supported, attempt treeless cloning echoinfo "Attempting to shallow clone $GIT_REV from Salt's repository ${_SALT_REPO_URL}" - ## Shallow cloning is resulting in the wrong version of Salt, even with a depth of 5 - ## getting 3007.0+0na.246d066 when it should be 3007.1+410.g246d066457, disabling for now - ## if git clone --depth 1 --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then - echodebug "git command, git clone --branch $GIT_REV $_SALT_REPO_URL $__SALT_CHECKOUT_REPONAME" - if git clone --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then + echodebug "git command, git clone --filter=tree:0 --branch $GIT_REV $_SALT_REPO_URL $__SALT_CHECKOUT_REPONAME" + if git clone --filter=tree:0 --branch "$GIT_REV" "$_SALT_REPO_URL" "$__SALT_CHECKOUT_REPONAME"; then # shellcheck disable=SC2164 cd "${_SALT_GIT_CHECKOUT_DIR}" __SHALLOW_CLONE=$BS_TRUE - echoinfo "shallow path (disabled shallow) git cloned $GIT_REV, version $(python3 salt/version.py)" + echoinfo "shallow path git cloned $GIT_REV, version $(python3 salt/version.py)" else # Shallow clone above failed(missing upstream tags???), let's resume the old behaviour. echowarn "Failed to shallow clone."