patternshellgitMinor
Git merge script
Viewed 0 times
scriptgitmerge
Problem
The branches I need to merge are called test and test-passed. Merging will always be fast-forward, from test to test-passed as commits to test-passed are only done automatically from test. This is currently working, just wondering if the approach is correct. The script is executed by Hudson, once all testing is complete.
One specific question I have, is if I need to create local branches as well (-b) or is that not required?
Output from above:
git status
git reset --hard
git pull origin test
git checkout origin/test
git pull origin test-passed
git checkout origin/test-passed
git merge origin/test
git push origin HEAD:test-passedOne specific question I have, is if I need to create local branches as well (-b) or is that not required?
Output from above:
+ git status
HEAD detached from origin/test-passed
nothing to commit, working directory clean
+ git reset --hard
HEAD is now at 16a2d8d updated version
+ git pull origin test
From ssh://github.com/myrepo.git
* branch test -> FETCH_HEAD
Already up-to-date.
+ git checkout origin/test
HEAD is now at 16a2d8d... updated version
+ git pull origin test-passed
From ssh://github.com/myrepo.git
* branch test-passed -> FETCH_HEAD
Already up-to-date.
+ git checkout origin/test-passed
Previous HEAD position was 16a2d8d... updated version
HEAD is now at 2aa260d... Merge branch 'dev-integration' into test
+ git merge origin/test
Updating 2aa260d..16a2d8d
Fast-forward
app/application.properties | 8 ++++----
4 files changed, 14 insertions(+), 5 deletions(-)
+ git push origin HEAD:test-passed
To ssh://git@github.com/myrepo.git
2aa260d..16a2d8d HEAD -> test-passed
Solution
use variables
Pulling common elements into variables will make those things easier to follow and change later.
error checking
Is there any chance one of the steps will fail? You could check the return value of each step or just
There is also bash strict mode which builds on
documentation
It would be a good idea to explain what the intent of the code is.
shebang
Presumably this is a bash script. It would be good to make it clear by putting
as the first line.
Pulling common elements into variables will make those things easier to follow and change later.
BRANCH_TEST="test"
BRANCH_PASSED="test-passed"
git status
git reset --hard
git pull origin $BRANCH_TEST
git checkout origin/$BRANCH_TEST
git pull origin $BRANCH_PASSED
git checkout origin/$BRANCH_PASSED
git merge origin/$BRANCH_TEST
git push origin HEAD:$BRANCH_PASSEDerror checking
Is there any chance one of the steps will fail? You could check the return value of each step or just
set -e to get bash to exit on any command having an error.There is also bash strict mode which builds on
set -e with some other things to make coding in the shell less surprising.documentation
It would be a good idea to explain what the intent of the code is.
shebang
Presumably this is a bash script. It would be good to make it clear by putting
#!/bin/bashas the first line.
Code Snippets
BRANCH_TEST="test"
BRANCH_PASSED="test-passed"
git status
git reset --hard
git pull origin $BRANCH_TEST
git checkout origin/$BRANCH_TEST
git pull origin $BRANCH_PASSED
git checkout origin/$BRANCH_PASSED
git merge origin/$BRANCH_TEST
git push origin HEAD:$BRANCH_PASSED#!/bin/bashContext
StackExchange Code Review Q#82483, answer score: 2
Revisions (0)
No revisions yet.