Unverified Commit 79b350eb authored by Prabhat Roy's avatar Prabhat Roy Committed by GitHub
Browse files

Added script to sync fbcode changes with main branch (#4769)

* [WIP] Added script to sync fbcode changes with main branch

* Make unique branches for multiple runs of the script

* Updated the files

* Change echo message

* Addressed review comments

* Removed from_repo command line argument

* Make fork_main_branch optional
parent c786d124
Utility scripts
===============
* `fbcode_to_main_sync.sh`
This shell script is used to synchronise internal changes with the main repository.
To run this script:
.. code:: bash
chmod +x fbcode_to_main_sync.sh
./fbcode_to_main_sync.sh <commit_hash> <fork_name> <fork_main_branch>
where
``commit_hash`` represents the commit hash in fbsync branch from where we should start the sync.
``fork_name`` is the name of the remote corresponding to your fork, you can check it by doing `"git remote -v"`.
``fork_main_branch`` (optional) is the name of the main branch on your fork(default="main").
This script will create PRs corresponding to the commits in fbsync. Please review these, add the [FBCode->GH] prefix on the title and publish them. Most importantly, add the [FBCode->GH] prefix at the beginning of the merge message as well.
#!/bin/bash
if [ -z $1 ]
then
echo "Commit hash is required to be passed when running this script."
echo "./fbcode_to_main_sync.sh <commit_hash> <fork_name> <fork_main_branch>"
exit 1
fi
commit_hash=$1
if [ -z $2 ]
then
echo "Fork name is required to be passed when running this script."
echo "./fbcode_to_main_sync.sh <commit_hash> <fork_name> <fork_main_branch>"
exit 1
fi
fork_name=$2
if [ -z $3 ]
then
fork_main_branch="main"
else
fork_main_branch=$3
fi
from_branch="fbsync"
git stash
git checkout $from_branch
git pull
# Add random prefix in the new branch name to keep it unique per run
prefix=$RANDOM
IFS='
'
for line in $(git log --pretty=oneline "$commit_hash"..HEAD)
do
if [[ $line != *\[fbsync\]* ]]
then
echo "Parsing $line"
hash=$(echo $line | cut -f1 -d' ')
git checkout $fork_main_branch
git checkout -B cherrypick_${prefix}_${hash}
git cherry-pick -x "$hash"
git push $fork_name cherrypick_${prefix}_${hash}
git checkout $from_branch
fi
done
echo "Please review the PRs, add [FBCode->GH] prefix in the title and publish them."
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment