diff --git a/pkgs/clerie-update-nixfiles/clerie-update-nixfiles.sh b/pkgs/clerie-update-nixfiles/clerie-update-nixfiles.sh index eac8487..8054bc9 100755 --- a/pkgs/clerie-update-nixfiles/clerie-update-nixfiles.sh +++ b/pkgs/clerie-update-nixfiles/clerie-update-nixfiles.sh @@ -6,6 +6,41 @@ xgit() { git -c "user.name=Flake Update Bot" -c "user.email=flake-update-bot@clerie.de" -c "core.pager=cat" "$@" } +xgit_merge_theirs() { + # base branch is the one currently checked out + + # this is the branch we want to merge into the base branch + OTHER_BRANCH="$1" + + # merge commit message + COMMIT_MESSAGE="$2" + + # this branch gets used while merging + TEMP_BRANCH="tempbranch" + + # create a merge commit between base branch and other branch, so it shows up correctly in git log + # we use `ours` so we make sure there are no merge conflicts + git merge -s ours "${OTHER_BRANCH}" -m "${COMMIT_MESSAGE}" + + # save our newly created merge commit in a seperate branch + git branch "${TEMP_BRANCH}" + + # export contents of other branch to current working directory + # this will change the last commit of our base branch too + git reset --hard "${OTHER_BRANCH}" + + # return to our merge commit from the base branch + # but without touching the current working directory + git reset --soft "${TEMP_BRANCH}" + + # Add the changes to our merge commit + git commit --amend --no-edit + + # we are now on our base branch again + # so we can delete the temp branch + git branch -D "${TEMP_BRANCH}" +} + NOW="$(date --utc +%Y-%m-%d-%H-%M)" xgit status || xgit clone gitea@git.clerie.de:clerie/nixfiles.git . @@ -43,7 +78,7 @@ xgit push --set-upstream origin "${UPDATE_BRANCH}" echo "[!] Merge ${UPDATE_BRANCH} into updated-inputs" xgit checkout updated-inputs -xgit merge -s ort -X theirs "${UPDATE_BRANCH}" -m "Update from ${UPDATE_BRANCH}" +xgit_merge_theirs "${UPDATE_BRANCH}" "Update from ${UPDATE_BRANCH}" echo "[!] Publish updated-inputs" xgit push origin updated-inputs