Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- function show_help_and_exit {
- echo -e "Usage\n\t$1 <master branch> <branch to merge>\n"
- exit 2
- }
- [[ $# -eq 2 ]] || show_help_and_exit
- VIMDIFF=vimdiff
- MASTER_BRANCH=$1
- MERGE_FROM_BRANCH=$2
- TEMP_DIR="/tmp/gitvimdiff"
- TEMP_FILE="$TEMP_DIR/`date '+%H:%M:%S.%N'`"
- MASTER_FILE="$TEMP_FILE.master"
- TO_MERGE_FILE="$TEMP_FILE.to_merge"
- CHANGED_FILES="`git diff "$MASTER_BRANCH" "$MERGE_FROM_BRANCH" --name-only`"
- function cleanup_data {
- echo 'cleaning temporary directory..'
- rm -rf $TEMP_DIR
- }
- function bashtrap {
- cleanup_data
- }
- trap bashtrap INT
- mkdir -p $TEMP_DIR 2> /dev/null
- git checkout $MERGE_FROM_BRANCH &> /dev/null || exit 4
- for file in $CHANGED_FILES
- do
- echo -e "++++ $file ++++" >> $TO_MERGE_FILE
- if [[ -f $file ]]
- then
- cat $file >> $TO_MERGE_FILE
- fi
- done
- git checkout $MASTER_BRANCH &> /dev/null || exit 5
- for file in $CHANGED_FILES
- do
- echo -e "---- $file ----" >> $MASTER_FILE
- if [[ -f $file ]]
- then
- cat $file >> $MASTER_FILE
- fi
- done
- $VIMDIFF $MASTER_FILE $TO_MERGE_FILE
- cleanup_data
- exit 0
Add Comment
Please, Sign In to add comment