[PATCH] D142726: [Workflow] Add Release Repo sync script

Tobias Hieta via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 9 05:02:03 PST 2023


thieta updated this revision to Diff 496095.
thieta added a comment.

Fix comment


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142726/new/

https://reviews.llvm.org/D142726

Files:
  llvm/utils/git/sync-release-repo.sh


Index: llvm/utils/git/sync-release-repo.sh
===================================================================
--- /dev/null
+++ llvm/utils/git/sync-release-repo.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+# This script will sync github.com/llvm/llvm-project with
+# github.com/llvm/llvm-project-release-prs and try to merge
+# the changes in the release branch.
+
+set -e
+set -x
+
+# We should always get the branch from the environment.
+# But otherwise just default to something. We can probably
+# have a better default here?
+RELEASE_BRANCH="${RELEASE_BRANCH:-release/16.x}"
+
+# We will add two remotes here:
+#  main - which will point to $MAIN_URL
+#  release - which will point to $RELEASE_URL
+# The remotes will use random strings to avoid
+# collisions
+MAIN_REMOTE=$(uuidgen)
+RELEASE_REMOTE=$(uuidgen)
+CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+
+git remote add $MAIN_REMOTE "https://github.com/llvm/llvm-project"
+git remote add $RELEASE_REMOTE "https://github.com/llvm/llvm-project-release-prs"
+
+# Make sure we are up to date on all our repos first
+git fetch $MAIN_REMOTE
+git fetch $RELEASE_REMOTE
+
+# Create our sync branch. Starting with the main
+# repo first since it's important to get those
+# changes
+MERGE_BRANCH=$(uuidgen)
+git switch -c $MERGE_BRANCH $MAIN_REMOTE/$RELEASE_BRANCH
+
+# Merge changes from the release repo
+git merge --ff-only $RELEASE_REMOTE/$RELEASE_BRANCH
+
+if ! git diff-index --quiet $MAIN_REMOTE/$RELEASE_BRANCH; then
+  echo "Changes in the release remote - pushing to main remote"
+  git push $MAIN_REMOTE $MERGE_BRANCH:$RELEASE_BRANCH
+fi
+
+# Then we need to update again
+git fetch $MAIN_REMOTE
+git fetch $RELEASE_REMOTE
+
+# And merge all the new data to the current branch
+git merge --ff-only $MAIN_REMOTE/$RELEASE_BRANCH
+
+# If anything changed let's merge it
+if ! git diff-index --quiet $RELEASE_REMOTE/$RELEASE_BRANCH; then
+  echo "Changes in main - pushing to release"
+  git push $RELEASE_REMOTE $MERGE_BRANCH:$RELEASE_BRANCH
+fi
+
+# Cleanup - enable for debug
+if false; then
+  git remote remove $RELEASE_REMOTE
+  git remote remove $MAIN_REMOTE
+
+  git switch $CURRENT_BRANCH
+  git branch -D $MERGE_BRANCH
+fi


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D142726.496095.patch
Type: text/x-patch
Size: 2189 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230209/b28efd0c/attachment.bin>


More information about the llvm-commits mailing list