From 99e030ce27173be4090c4febdcb2ebf4dd0ae438 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 11 Jun 2023 20:44:39 -0400 Subject: [PATCH] Add script for auto-propagating changes to modern branches where possible [skip ci] --- scripts/propagate.sh | 44 ++++++++++++++++++++++++++++++++ release.sh => scripts/release.sh | 0 2 files changed, 44 insertions(+) create mode 100755 scripts/propagate.sh rename release.sh => scripts/release.sh (100%) diff --git a/scripts/propagate.sh b/scripts/propagate.sh new file mode 100755 index 00000000..f0fce218 --- /dev/null +++ b/scripts/propagate.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -e + +WORK_DIR=`mktemp -d` + +# deletes the temp directory +function cleanup { + cd $HOME + rm -rf "$WORK_DIR" +} + +trap cleanup EXIT + +# 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 < <(git ls-remote --heads origin | awk '{print $2}' | sed 's:.*/::' | sort -V) +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 -m "Merge $our_version into $version" propagations/$our_version >/dev/null; then + echo "done" + git push -u origin propagations/$version:$version &>/dev/null + else + echo "failed, this merge must be done manually" + exit 1 + fi + our_version=$version + fi +done diff --git a/release.sh b/scripts/release.sh similarity index 100% rename from release.sh rename to scripts/release.sh