Advertisement
IchHabRecht

[GIT] git write-changelog

Sep 11th, 2013
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.14 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. WRITE=false
  4. FILE="ChangeLog"
  5. GITPATH="master..HEAD"
  6.  
  7. while [ "$1" != "" ]; do
  8.     case $1 in
  9.         -w )
  10.             WRITE=true
  11.             ;;
  12.         -f )
  13.             shift
  14.             FILE="$1"
  15.             ;;
  16.         * )
  17.             GITPATH="$1"
  18.             ;;
  19.     esac
  20.     shift
  21. done
  22.  
  23. if `git branch --no-color | grep -q '^\*'`; then
  24.     OUTPUT=""
  25.     HEAD=""
  26.     BRANCH=`git branch --no-color | grep '^\*' | grep -v 'no branch' | sed 's/^* //g' | sed 's/.*\///g' | grep '^[0-9][0-9.]'`
  27.     if [ "$BRANCH" != "" ]; then
  28.         DATE=`date -I`
  29.         DIR=${PWD##*/}
  30.         USER=`git config --get user.name`
  31.         HEAD="$DATE         [RELEASE] Release of $DIR $BRANCH ($USER)"$'\n'
  32.     fi
  33.  
  34.     LOG=`git log --pretty=format:"%ad %h %s (%an)" --date=short --no-merges $GITPATH`  
  35.     if [ "$LOG" != "" ]; then
  36.         OUTPUT=$HEAD$LOG$'\n'$'\n';
  37.     fi
  38.  
  39.     if [ -f $FILE ]; then
  40.         OUTPUT=$OUTPUT"`cat $FILE`"
  41.     fi
  42.  
  43.     if $WRITE; then
  44.         echo "$OUTPUT" > $FILE
  45.  
  46.         OUTPUT=$OUTPUT$'\n'$'\n'"File $FILE was written."
  47.     fi
  48.  
  49.     echo "$OUTPUT"
  50.  
  51. fi
  52.  
  53. # USAGE
  54. # git write-changelog [-w] [-f <filename>] [<path>]
  55. # git write-changelog [-w] [-f ChangeLog] [master..HEAD]
  56. # -w: Write log to file
  57. # -f <filename>: Name of changelog file
  58. # path: path for git log
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement