Don’t want to wast time to repeat the branch merge actions, like [A]>[B]>[C], so I create the bash script to run it automatically.

Script for auto sync/merge the code from branch [A] to [B] with just one click

Quick Start

chmod +x auto_sync_branch.sh
./auto_sync_banch.sh -f config.txt.example

But you may have permission issue, as you are not the contributor of the this repo

How to update the configurations

cp config.txt.example config.txt

And update the configs to what you want

DEVELOP_BRANCH="develop"
REMOTE_REPO="https://github.com/pjq/auto_sync_branch.git"
LOCAL_REPO="local"
WORKSPACE="./auto_sync_branch_workspace"
RULE="master>develop|develop>pjq/develop|pjq/develop>user/develop"

Then run it

chmod +x auto_sync_branch.sh
./auto_sync_branch.sh -f config.txt

Output

./auto_sync_branch.sh -f config.txt
Config file:config.txt
read config...
Prepare the workspace...
Cloning into 'local'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 17 (delta 4), reused 12 (delta 4), pack-reused 0
Unpacking objects: 100% (17/17), done.
start sync...
Sync rule master>develop
Start Sync code from master to develop
From https://github.com/pjq/auto_sync_branch
 * branch            master     -> FETCH_HEAD
From https://github.com/pjq/auto_sync_branch
 * branch            develop    -> FETCH_HEAD
Already on 'develop'
Your branch is up to date with 'origin/develop'.
git checkout develop success!
Updating 3f0b2f9..13dae3f
Fast-forward
 auto_sync_branch.sh | 2 +-
 config.txt          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Merge master > develop success!
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/pjq/auto_sync_branch.git
   3f0b2f9..13dae3f  develop -> develop
Push to remote success!
Sync master>develop success!
Sync rule develop>pjq/develop
Start Sync code from develop to pjq/develop
From https://github.com/pjq/auto_sync_branch
 * branch            develop    -> FETCH_HEAD
From https://github.com/pjq/auto_sync_branch
 * branch            pjq/develop -> FETCH_HEAD
Branch 'pjq/develop' set up to track remote branch 'pjq/develop' from 'origin'.
Switched to a new branch 'pjq/develop'
git checkout pjq/develop success!
Updating 3f0b2f9..13dae3f
Fast-forward
 auto_sync_branch.sh | 2 +-
 config.txt          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Merge develop > pjq/develop success!
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/pjq/auto_sync_branch.git
   3f0b2f9..13dae3f  pjq/develop -> pjq/develop
Push to remote success!
Sync develop>pjq/develop success!
Sync rule pjq/develop>user/develop
Start Sync code from pjq/develop to user/develop
From https://github.com/pjq/auto_sync_branch
 * branch            pjq/develop -> FETCH_HEAD
From https://github.com/pjq/auto_sync_branch
 * branch            user/develop -> FETCH_HEAD
Branch 'user/develop' set up to track remote branch 'user/develop' from 'origin'.
Switched to a new branch 'user/develop'
git checkout user/develop success!
Updating 3f0b2f9..13dae3f
Fast-forward
 auto_sync_branch.sh | 2 +-
 config.txt          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Merge pjq/develop > user/develop success!
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/pjq/auto_sync_branch.git
   3f0b2f9..13dae3f  user/develop -> user/develop
Push to remote success!
Sync pjq/develop>user/develop success!

Update Rules

The rule is simple, define the branch from>to, and use “|” to split different rules

RULE="master>develop|develop>pjq/develop|pjq/develop>user/develop"

Auto Sync Branch Bash Script
Tagged on:     

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.