Allow pihole checkout to work even when upstream branches are rebased. This uses git reset --hard origin/... instead of git pull --no-rebase
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
@@ -84,11 +84,11 @@ checkout() {
|
||||
echo -e " ${INFO} Shortcut \"dev\" detected - checking out development / devel branches..."
|
||||
echo ""
|
||||
echo -e " ${INFO} Pi-hole Core"
|
||||
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "development" || { echo " ${CROSS} Unable to pull Core development branch"; exit 1; }
|
||||
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "development" "reset" || { echo " ${CROSS} Unable to pull Core development branch"; exit 1; }
|
||||
if [[ "${INSTALL_WEB_INTERFACE}" == "true" ]]; then
|
||||
echo ""
|
||||
echo -e " ${INFO} Web interface"
|
||||
fetch_checkout_pull_branch "${webInterfaceDir}" "devel" || { echo " ${CROSS} Unable to pull Web development branch"; exit 1; }
|
||||
fetch_checkout_pull_branch "${webInterfaceDir}" "devel" "reset" || { echo " ${CROSS} Unable to pull Web development branch"; exit 1; }
|
||||
fi
|
||||
#echo -e " ${TICK} Pi-hole Core"
|
||||
|
||||
@@ -100,10 +100,10 @@ checkout() {
|
||||
# Shortcut to check out master branches
|
||||
echo -e " ${INFO} Shortcut \"master\" detected - checking out master branches..."
|
||||
echo -e " ${INFO} Pi-hole core"
|
||||
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "master" || { echo " ${CROSS} Unable to pull Core master branch"; exit 1; }
|
||||
fetch_checkout_pull_branch "${PI_HOLE_FILES_DIR}" "master" "reset" || { echo " ${CROSS} Unable to pull Core master branch"; exit 1; }
|
||||
if [[ ${INSTALL_WEB_INTERFACE} == "true" ]]; then
|
||||
echo -e " ${INFO} Web interface"
|
||||
fetch_checkout_pull_branch "${webInterfaceDir}" "master" || { echo " ${CROSS} Unable to pull Web master branch"; exit 1; }
|
||||
fetch_checkout_pull_branch "${webInterfaceDir}" "master" "reset" || { echo " ${CROSS} Unable to pull Web master branch"; exit 1; }
|
||||
fi
|
||||
#echo -e " ${TICK} Web Interface"
|
||||
local path
|
||||
@@ -112,9 +112,9 @@ checkout() {
|
||||
chmod 644 /etc/pihole/ftlbranch
|
||||
elif [[ "${1}" == "core" ]] ; then
|
||||
str="Fetching branches from ${piholeGitUrl}"
|
||||
echo -ne " ${INFO} $str"
|
||||
echo -e " ${INFO} $str"
|
||||
if ! fully_fetch_repo "${PI_HOLE_FILES_DIR}" ; then
|
||||
echo -e "${OVER} ${CROSS} $str"
|
||||
echo -e " ${CROSS} $str"
|
||||
exit 1
|
||||
fi
|
||||
corebranches=($(get_available_branches "${PI_HOLE_FILES_DIR}"))
|
||||
@@ -136,12 +136,12 @@ checkout() {
|
||||
for e in "${corebranches[@]}"; do echo " - $e"; done
|
||||
exit 1
|
||||
fi
|
||||
checkout_pull_branch "${PI_HOLE_FILES_DIR}" "${2}"
|
||||
checkout_pull_branch "${PI_HOLE_FILES_DIR}" "${2}" "reset"
|
||||
elif [[ "${1}" == "web" ]] && [[ "${INSTALL_WEB_INTERFACE}" == "true" ]] ; then
|
||||
str="Fetching branches from ${webInterfaceGitUrl}"
|
||||
echo -ne " ${INFO} $str"
|
||||
echo -e " ${INFO} $str"
|
||||
if ! fully_fetch_repo "${webInterfaceDir}" ; then
|
||||
echo -e "${OVER} ${CROSS} $str"
|
||||
echo -e " ${CROSS} $str"
|
||||
exit 1
|
||||
fi
|
||||
webbranches=($(get_available_branches "${webInterfaceDir}"))
|
||||
@@ -163,7 +163,7 @@ checkout() {
|
||||
for e in "${webbranches[@]}"; do echo " - $e"; done
|
||||
exit 1
|
||||
fi
|
||||
checkout_pull_branch "${webInterfaceDir}" "${2}"
|
||||
checkout_pull_branch "${webInterfaceDir}" "${2}" "reset"
|
||||
elif [[ "${1}" == "ftl" ]] ; then
|
||||
local path
|
||||
local oldbranch
|
||||
|
@@ -2014,6 +2014,8 @@ fetch_checkout_pull_branch() {
|
||||
directory="${1}"
|
||||
local branch
|
||||
branch="${2}"
|
||||
local pull_or_reset
|
||||
pull_or_reset="${3}"
|
||||
|
||||
# Set the reference for the requested branch, fetch, check it put and pull it
|
||||
cd "${directory}" || return 1
|
||||
@@ -2021,7 +2023,7 @@ fetch_checkout_pull_branch() {
|
||||
git stash --all --quiet &> /dev/null || true
|
||||
git clean --quiet --force -d || true
|
||||
git fetch --quiet || return 1
|
||||
checkout_pull_branch "${directory}" "${branch}" || return 1
|
||||
checkout_pull_branch "${directory}" "${branch}" "${pull_or_reset}" || return 1
|
||||
}
|
||||
|
||||
checkout_pull_branch() {
|
||||
@@ -2030,25 +2032,42 @@ checkout_pull_branch() {
|
||||
directory="${1}"
|
||||
local branch
|
||||
branch="${2}"
|
||||
local pull_or_reset
|
||||
pull_or_reset="${3}"
|
||||
local oldbranch
|
||||
|
||||
cd "${directory}" || return 1
|
||||
|
||||
oldbranch="$(git symbolic-ref HEAD)"
|
||||
|
||||
str="Switching to branch: '${branch}' from '${oldbranch}'"
|
||||
if [[ "${branch}" != "${oldbranch}" ]]; then
|
||||
str="Switching to branch: '${branch}' from '${oldbranch}'"
|
||||
else
|
||||
str="Updating current branch: '${branch}'"
|
||||
fi
|
||||
printf " %b %s" "${INFO}" "$str"
|
||||
git checkout "${branch}" --quiet || return 1
|
||||
printf "%b %b %s\\n" "${OVER}" "${TICK}" "$str"
|
||||
# Data in the repositories is public anyway so we can make it readable by everyone (+r to keep executable permission if already set by git)
|
||||
chmod -R a+rX "${directory}"
|
||||
|
||||
git_pull=$(git pull --no-rebase || return 1)
|
||||
local git_pull
|
||||
if [[ "${pull_or_reset}" == "reset" ]]; then
|
||||
git_pull=$(git reset --hard "origin/${branch}" || return 1)
|
||||
|
||||
if [[ "$git_pull" == *"up-to-date"* ]]; then
|
||||
printf " %b %s\\n" "${INFO}" "${git_pull}"
|
||||
if [[ "$git_pull" == *"up-to-date"* ]]; then
|
||||
printf " %b %s\\n" "${INFO}" "${git_pull}"
|
||||
else
|
||||
printf "%s\\n" "$git_pull"
|
||||
fi
|
||||
else
|
||||
printf "%s\\n" "$git_pull"
|
||||
git_pull=$(git pull --no-rebase || return 1)
|
||||
|
||||
if [[ "$git_pull" == *"up-to-date"* ]]; then
|
||||
printf " %b %s\\n" "${INFO}" "${git_pull}"
|
||||
else
|
||||
printf "%s\\n" "$git_pull"
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
Reference in New Issue
Block a user