58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
WORK_DIR=`mktemp -d`
|
|
|
|
# deletes the temp directory
|
|
function cleanup {
|
|
cd $HOME
|
|
rm -rf "$WORK_DIR"
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
trap "exit" INT
|
|
|
|
# clone ModernFix repo
|
|
|
|
echo "downloading temporary modernfix..."
|
|
cd $WORK_DIR
|
|
git clone https://github.com/embeddedt/ModernFix mfix &>/dev/null
|
|
cd mfix
|
|
|
|
# gather version list
|
|
readarray -t all_versions < <(scripts/branchlist.sh)
|
|
echo "found versions: ${all_versions[@]}"
|
|
|
|
# checkout base version
|
|
git checkout -b propagations/${all_versions[0]} origin/${all_versions[0]} &>/dev/null
|
|
|
|
our_version=${all_versions[0]}
|
|
restore_version=$our_version
|
|
|
|
for version in "${all_versions[@]}"; do
|
|
if ! { echo "$version"; echo "$our_version"; } | sort --version-sort --check &>/dev/null; then
|
|
echo -n "merging $our_version into ${version}... "
|
|
git checkout -b propagations/$version origin/$version &>/dev/null
|
|
if ! git merge --no-commit propagations/$our_version &>/dev/null; then
|
|
merge_failed=yes
|
|
echo "failed, this merge must be done manually using the provided shell"
|
|
else
|
|
merge_failed=no
|
|
echo -n "done"
|
|
fi
|
|
if [ "x$merge_failed" == "xyes" ]; then
|
|
git status
|
|
bash
|
|
echo -e $'Press any key to commit or Ctrl+C to completely abort...\n'
|
|
read -rs -n1
|
|
fi
|
|
if (git add . && git commit -m "Merge $our_version into $version" &>/dev/null); then
|
|
echo
|
|
git push -u origin propagations/$version:$version &>/dev/null
|
|
else
|
|
echo -e "\b\b\b\bnothing to merge"
|
|
fi
|
|
our_version=$version
|
|
fi
|
|
done
|