[Update] Add --ours parameter to override merge strategy
parent
03ad0f22c4
commit
c7280e182f
83
update.sh
83
update.sh
|
@ -4,9 +4,51 @@ for bin in curl docker-compose docker git awk sha1sum; do
|
||||||
if [[ -z $(which ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi
|
if [[ -z $(which ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
export LC_ALL=C
|
||||||
|
DATE=$(date +%Y-%m-%d_%H_%M_%S)
|
||||||
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
declare -a DC_PARAMS
|
||||||
|
|
||||||
|
while (($#)); do
|
||||||
|
case "${1}" in
|
||||||
|
--check|-c)
|
||||||
|
echo "Checking remote code for updates..."
|
||||||
|
git fetch origin ${BRANCH}
|
||||||
|
if [[ -z $(git log HEAD --pretty=format:"%H" | grep $(git rev-parse origin/${BRANCH})) ]]; then
|
||||||
|
echo "Updated code is available."
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "No updates available."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--no-start)
|
||||||
|
DC_PARAMS=(${DC_PARAMS[@]} "--no-start")
|
||||||
|
;;
|
||||||
|
--ours)
|
||||||
|
MERGE_STRATEGY=ours
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
[[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing"; exit 1;}
|
[[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing"; exit 1;}
|
||||||
|
|
||||||
CONFIG_ARRAY=("SKIP_LETS_ENCRYPT" "USE_WATCHDOG" "WATCHDOG_NOTIFY_EMAIL" "SKIP_CLAMD" "SKIP_IP_CHECK" "SKIP_FAIL2BAN" "ADDITIONAL_SAN" "DOVEADM_PORT" "IPV4_NETWORK" "IPV6_NETWORK" "LOG_LINES")
|
CONFIG_ARRAY=(
|
||||||
|
"SKIP_LETS_ENCRYPT"
|
||||||
|
"USE_WATCHDOG"
|
||||||
|
"WATCHDOG_NOTIFY_EMAIL"
|
||||||
|
"SKIP_CLAMD"
|
||||||
|
"SKIP_IP_CHECK"
|
||||||
|
"SKIP_NETFILTER"
|
||||||
|
"ADDITIONAL_SAN"
|
||||||
|
"DOVEADM_PORT"
|
||||||
|
"IPV4_NETWORK"
|
||||||
|
"IPV6_NETWORK"
|
||||||
|
"LOG_LINES"
|
||||||
|
"SNAT_TO_SOURCE"
|
||||||
|
)
|
||||||
|
|
||||||
sed -i '$a\' mailcow.conf
|
sed -i '$a\' mailcow.conf
|
||||||
for option in ${CONFIG_ARRAY[@]}; do
|
for option in ${CONFIG_ARRAY[@]}; do
|
||||||
if [[ ${option} == "ADDITIONAL_SAN" ]]; then
|
if [[ ${option} == "ADDITIONAL_SAN" ]]; then
|
||||||
|
@ -44,15 +86,23 @@ for option in ${CONFIG_ARRAY[@]}; do
|
||||||
elif [[ ${option} == "IPV6_NETWORK" ]]; then
|
elif [[ ${option} == "IPV6_NETWORK" ]]; then
|
||||||
if ! grep -q ${option} mailcow.conf; then
|
if ! grep -q ${option} mailcow.conf; then
|
||||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
echo "Adding new option \"${option}\" to mailcow.conf"
|
||||||
echo '# Internal IPv6 subnet in fd00::/8' >> mailcow.conf
|
echo '# Internal IPv6 subnet in fc00::/7' >> mailcow.conf
|
||||||
echo "IPV6_NETWORK=fd4d:6169:6c63:6f77::/64" >> mailcow.conf
|
echo "IPV6_NETWORK=fd4d:6169:6c63:6f77::/64" >> mailcow.conf
|
||||||
fi
|
fi
|
||||||
|
elif [[ ${option} == "SNAT_TO_SOURCE" ]]; then
|
||||||
|
if ! grep -q ${option} mailcow.conf; then
|
||||||
|
echo "Adding new option \"${option}\" to mailcow.conf"
|
||||||
|
echo '# Use this IP for outgoing connections (SNAT)' >> mailcow.conf
|
||||||
|
echo "#SNAT_TO_SOURCE=" >> mailcow.conf
|
||||||
|
fi
|
||||||
elif ! grep -q ${option} mailcow.conf; then
|
elif ! grep -q ${option} mailcow.conf; then
|
||||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
echo "Adding new option \"${option}\" to mailcow.conf"
|
||||||
echo "${option}=n" >> mailcow.conf
|
echo "${option}=n" >> mailcow.conf
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
sed -i 's#SKIP_FAIL2BAN#SKIP_NETFILTER#g' mailcow.conf
|
||||||
|
|
||||||
echo -en "Checking internet connection... "
|
echo -en "Checking internet connection... "
|
||||||
curl -o /dev/null google.com -sm3
|
curl -o /dev/null google.com -sm3
|
||||||
if [[ $? != 0 ]]; then
|
if [[ $? != 0 ]]; then
|
||||||
|
@ -62,31 +112,6 @@ if [[ $? != 0 ]]; then
|
||||||
echo -e "\e[32mOK\e[0m"
|
echo -e "\e[32mOK\e[0m"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -o pipefail
|
|
||||||
export LC_ALL=C
|
|
||||||
DATE=$(date +%Y-%m-%d_%H_%M_%S)
|
|
||||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
||||||
declare -a DC_PARAMS
|
|
||||||
|
|
||||||
while (($#)); do
|
|
||||||
case "${1}" in
|
|
||||||
--check|-c)
|
|
||||||
echo "Checking remote code for updates..."
|
|
||||||
git fetch origin ${BRANCH}
|
|
||||||
if [[ -z $(git log HEAD --pretty=format:"%H" | grep $(git rev-parse origin/${BRANCH})) ]]; then
|
|
||||||
echo "Updated code is available."
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "No updates available."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
--no-start)
|
|
||||||
DC_PARAMS=(${DC_PARAMS[@]} "--no-start")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "\e[32mChecking for newer update script...\e[0m"
|
echo -e "\e[32mChecking for newer update script...\e[0m"
|
||||||
SHA1_1=$(sha1sum update.sh)
|
SHA1_1=$(sha1sum update.sh)
|
||||||
git fetch origin ${BRANCH}
|
git fetch origin ${BRANCH}
|
||||||
|
@ -122,9 +147,9 @@ git add -u
|
||||||
git commit -am "Before update on ${DATE}" > /dev/null
|
git commit -am "Before update on ${DATE}" > /dev/null
|
||||||
echo -e "\e[32mFetching updated code from remote...\e[0m"
|
echo -e "\e[32mFetching updated code from remote...\e[0m"
|
||||||
git fetch origin ${BRANCH}
|
git fetch origin ${BRANCH}
|
||||||
echo -e "\e[32mMerging local with remote code (recursive, options: \"theirs\", \"patience\"...\e[0m"
|
echo -e "\e[32mMerging local with remote code (recursive, strategy: \"${MERGE_STRATEGY:-theirs}\", options: \"patience\"...\e[0m"
|
||||||
git config merge.defaultToUpstream true
|
git config merge.defaultToUpstream true
|
||||||
git merge -Xtheirs -Xpatience -m "After update on ${DATE}"
|
git merge -X${MERGE_STRATEGY:-theirs} -Xpatience -m "After update on ${DATE}"
|
||||||
# Need to use a variable to not pass return codes of if checks
|
# Need to use a variable to not pass return codes of if checks
|
||||||
MERGE_RETURN=$?
|
MERGE_RETURN=$?
|
||||||
if [[ ${MERGE_RETURN} == 128 ]]; then
|
if [[ ${MERGE_RETURN} == 128 ]]; then
|
||||||
|
|
Loading…
Reference in New Issue