Automate rebase with patches

This commit is contained in:
SpiritCroc 2024-05-05 11:18:04 +02:00
parent eb706739a9
commit 8f70dea230
2 changed files with 50 additions and 34 deletions

39
generate_patches.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
persist_patches() {
local repo="$(realpath "$1")"
local patch_dir="$SCHILDI_ROOT/patches/$(basename "$1")"
if [ ! -d "$repo" ]; then
echo "Unknown repo: $repo"
return 1
fi
pushd "$repo"
if [ -d "$patch_dir" ]; then
echo "Clearing old patches..."
rm "$patch_dir"/*
else
echo "Creating new patch dir $patch_dir..."
mkdir "$patch_dir"
fi
echo "Creating new patches"
git format-patch -k upstream/master.. -o "$patch_dir"
echo "Clearing automated commits from patches"
find "$patch_dir" -name "*-Automatic-package.json-adjustment.patch" -exec rm {} \;
find "$patch_dir" -name "*-Update-version-to-*.patch" -exec rm {} \;
popd
}
persist_patches element-desktop
#persist_patches element-web
persist_patches matrix-react-sdk
popd > /dev/null

View File

@ -4,57 +4,36 @@ set -e
mydir="$(dirname "$(realpath "$0")")"
if [ "$1" = "--checkout" ]; then
git_action=checkout
shift
else
git_action=merge
fi
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
if [ "$git_action" = "checkout" ]; then
# Persist current state
./generate_patches.sh
# Abandon all local submodule state
forall_repos git reset --hard
git submodule update -f --recursive
else
# Check branch
check_branch $branch
forall_repos check_branch $branch
# Ensure clean git state
forall_repos check_clean_git
fi
# Fetch upstream
forall_repos git fetch upstream
# Automatic reversions
if [ "$git_action" != "checkout" ]; then
automatic_i18n_reversion
automatic_packagejson_reversion
fi
# Merge upstream
# Check if specific version to merge passed
if [ -z "$1" ]; then
get_latest_upstream_tag
else
latest_upstream_tag="$1"
fi
forelement_repos git "$git_action" "$latest_upstream_tag"
forelement_repos git checkout "$latest_upstream_tag"
get_current_mxsdk_tags
pushd "matrix-js-sdk" > /dev/null
git "$git_action" "$current_mxjssdk_tag"
git checkout "$current_mxjssdk_tag"
popd > /dev/null
pushd "matrix-react-sdk" > /dev/null
git "$git_action" "$current_mxreactsdk_tag"
git checkout "$current_mxreactsdk_tag"
popd > /dev/null
# Refresh environment
@ -62,11 +41,9 @@ make clean
make setup
# Apply our patches
if [ "$git_action" = "checkout" ]; then
#apply_patches matrix-react-sdk
apply_patches matrix-react-sdk
#apply_patches element-web
apply_patches element-desktop
fi
# Automatic adjustments
#automatic_i18n_adjustment