Guest User

Untitled

a guest
Apr 26th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3.  
  4. function show_help_and_exit {
  5. echo -e "Usage\n\t$1 <master branch> <branch to merge>\n"
  6. exit 2
  7. }
  8.  
  9. [[ $# -eq 2 ]] || show_help_and_exit
  10.  
  11. VIMDIFF=vimdiff
  12.  
  13. MASTER_BRANCH=$1
  14. MERGE_FROM_BRANCH=$2
  15.  
  16. TEMP_DIR="/tmp/gitvimdiff"
  17. TEMP_FILE="$TEMP_DIR/`date '+%H:%M:%S.%N'`"
  18.  
  19. MASTER_FILE="$TEMP_FILE.master"
  20. TO_MERGE_FILE="$TEMP_FILE.to_merge"
  21.  
  22. CHANGED_FILES="`git diff "$MASTER_BRANCH" "$MERGE_FROM_BRANCH" --name-only`"
  23.  
  24. function cleanup_data {
  25. echo 'cleaning temporary directory..'
  26. rm -rf $TEMP_DIR
  27. }
  28.  
  29. function bashtrap {
  30. cleanup_data
  31. }
  32.  
  33. trap bashtrap INT
  34.  
  35. mkdir -p $TEMP_DIR 2> /dev/null
  36.  
  37. git checkout $MERGE_FROM_BRANCH &> /dev/null || exit 4
  38. for file in $CHANGED_FILES
  39. do
  40. echo -e "++++ $file ++++" >> $TO_MERGE_FILE
  41. if [[ -f $file ]]
  42. then
  43. cat $file >> $TO_MERGE_FILE
  44. fi
  45. done
  46.  
  47. git checkout $MASTER_BRANCH &> /dev/null || exit 5
  48. for file in $CHANGED_FILES
  49. do
  50. echo -e "---- $file ----" >> $MASTER_FILE
  51. if [[ -f $file ]]
  52. then
  53. cat $file >> $MASTER_FILE
  54. fi
  55. done
  56.  
  57. $VIMDIFF $MASTER_FILE $TO_MERGE_FILE
  58.  
  59. cleanup_data
  60. exit 0
Add Comment
Please, Sign In to add comment