[Libreoffice-commits] .: logerrit

Bjoern Michaelsen bmichaelsen at kemper.freedesktop.org
Thu Jun 21 08:53:01 PDT 2012


 logerrit |  187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 187 insertions(+)

New commits:
commit fe49f23529a52c33ca3e2f673d242273bcaa7108
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jun 20 15:42:27 2012 -0500

    add helper script for gerrit CLI integration
    
    Change-Id: I5705530ee4d5b93bc66ca23463098ac45f49323d

diff --git a/logerrit b/logerrit
new file mode 100755
index 0000000..b3d2233
--- /dev/null
+++ b/logerrit
@@ -0,0 +1,187 @@
+#!/bin/sh
+
+#GERRITHOST=gerrit.libreoffice.org
+GERRITHOST=logerrit
+GERRITURL=ssh://$GERRITHOST/core
+
+get_SHA_for_change() {
+	SHA=`ssh ${GERRITHOST?} gerrit query --all-approvals change:$1|grep ref|tail -1|cut -d: -f2`
+}
+
+ask_tristate() {
+	case $1 in
+		[yY] | [yY][Ee][Ss] | [+] )
+			ANSWER=y
+		;;
+		[nN] | [n|N][O|o] | [-] )
+			ANSWER=n
+		;;
+		[] )
+			ANSWER=
+		;;
+		* )
+			echo "Please answer with either +,-,y,n,yes,no or the empty string."
+			exit 1
+		;;
+	esac
+
+}
+
+case "$1" in
+	help)
+		echo "Usage: ./logerrit subcommand [options]"
+		echo "subcommands:"
+		echo "             test                 test your gerrit setup"
+		echo "             submit [BRANCH]      submit your change for review to a branch"
+		echo "             nextchange [BRANCH]   reset branch to the remote to start with the next change"
+		echo "             checkout CHANGEID    checkout the changes for review"
+		echo "             pull CHANGEID        pull (and merge) the changes on current branch"
+		echo "             cherry-pick CHANGEID cherry-pick the change on current branch"
+		echo "             patch CHANGEID       show the change as a patch"
+		echo "             review [CHANGEID]    interactively review a change (current one if no changeid given)"
+		echo "             query ....           query for changes for review on project core"
+		echo "             <any other gerrit command>"
+		exit
+	;;
+	test)
+		if test -n "`ssh $GERRITHOST 2>&1|grep \"Welcome to Gerrit Code Review\"`"
+		then
+			echo "Your gerrit setup was succesfull!"
+		else
+			echo "There seems to be trouble."
+			echo "please have the output of: ssh -vvvv logerrit"
+			echo "at hand when looking for help."
+		fi
+	;;
+	submit)
+		BRANCH=$2
+		if test -z "$BRANCH"
+		then
+			BRANCH=`git symbolic-ref HEAD 2> /dev/null`
+			BRANCH="${BRANCH##refs/heads/}"
+			if test -z "$BRANCH"
+			then
+				echo "no branch specified, and could not guess the current branch"
+				exit 1
+			fi
+			echo "no branch specified, guessing current branch $BRANCH"
+		fi
+		git push $GERRITURL HEAD:refs/for/$BRANCH
+	;;
+	nextchange)
+		CHANGEID=`git log --format=format:%b -1 HEAD|grep Change-Id|cut -d: -f2|tr -d \ `
+		if test -z "$CHANGEID"
+		then
+			CHANGEID="NOCHANGEID"
+		fi
+		BACKUPBRANCH=backup/$CHANGEID-`date +%F-%H%M%S`
+		git branch $BACKUPBRANCH
+		echo "current state backed up as $BACKUPBRANCH"
+		BRANCH=$2
+		if test -z "$BRANCH"
+		then
+			BRANCH=`git symbolic-ref HEAD 2> /dev/null`
+			BRANCH="${BRANCH##refs/heads/}"
+			if test -z "$BRANCH"
+			then
+				echo "no branch specified, and could not guess the current branch"
+				exit 1
+			fi
+			echo "no branch specified, guessing current branch $BRANCH"
+		fi
+		git reset --hard remotes/origin/$BRANCH
+	;;
+	review)
+		CHANGEID=$2
+		if test -z "$CHANGEID"
+		then
+			CHANGEID=`git log --format=format:%b -1 HEAD|grep Change-Id|cut -d: -f2`
+			if test -z "$CHANGEID"
+			then
+				echo "could not find a Change-Id in your last commit, sorry"
+				exit 1
+			fi
+			echo "no Change-Id given on the command line, reviewing change$CHANGEID"
+		fi
+		MESSAGEREQ=""
+		read -p 'was the change verified to build sucessfully (+) or found not to build (-) or none of that ()? ' VERIFIED
+		ask_tristate $VERIFIED
+		case "$ANSWER" in
+			"y")
+				VERIFIEDFLAG=--verified=+1
+			;;
+			"n")
+				VERIFIEDFLAG="--verified=-1"
+				MESSAGEREQ="$MESSAGEREQ and explain why you could not verify this"
+			;;
+			*)
+				VERIFIEDFLAG="--verified=0"
+			;;
+
+		esac
+		read -p 'is the code looking good (+), bad (-) or none of that ()? ' CODEREVIEW
+		ask_tristate $CODEREVIEW
+		case "$ANSWER" in
+			"y")
+				read -p 'do you approve and submit the change (+) too, or prefer someone else to do that ()? ' CODEREVIEW
+				ask_tristate $CODEREVIEW
+				case "$ANSWER" in
+					"y")
+						CODEREVIEWFLAG="--codereview=2 --submit"
+					;;
+					"n")
+						CODEREVIEWFLAG="--codereview=1"
+					;;
+					*)
+						CODEREVIEWFLAG="--codereview=1"
+					;;
+				esac
+			;;
+			"n")
+				read -p 'do you still allow the change to go in () or not (-)? ' CODEREVIEW
+				ask_tristate $CODEREVIEW
+				case "$ANSWER" in
+					"y")
+						CODEREVIEWFLAG="--codereview=-1"
+						MESSAGEREQ="$MESSAGEREQ and explain why you have reservations about the code"
+					;;
+					"n")
+						CODEREVIEWFLAG="--codereview=-2"
+						MESSAGEREQ="$MESSAGEREQ and explain why you want to block this"
+					;;
+					*)
+						CODEREVIEWFLAG="--codereview=-1"
+						MESSAGEREQ="$MESSAGEREQ and explain why you have reservations about the code"
+					;;
+				esac
+			;;
+			*)
+			;;
+		esac
+		read -p "please type a friendly comment$MESSAGEREQ: " MESSAGE
+		echo ssh ${GERRITHOST?} gerrit review -m \"$MESSAGE\" $VERIFIEDFLAG $CODEREVIEWFLAG $CHANGEID
+	;;
+	checkout)
+		get_SHA_for_change $2
+		git fetch $GERRITURL $SHA && git checkout FETCH_HEAD
+	;;
+	pull)
+		get_SHA_for_change $2
+		git pull $GERRITURL $SHA
+	;;
+	cherry-pick)
+		get_SHA_for_change $2
+		git fetch $GERRITURL $SHA && git cherry-pick FETCH_HEAD
+	;;
+	patch)
+		get_SHA_for_change $2
+		git fetch $GERRITURL $SHA && git format-patch -1 --stdout FETCH_HEAD
+	;;
+	query)
+		shift
+		ssh ${GERRITHOST?} gerrit query project:core $@
+	;;
+	*)
+		ssh ${GERRITHOST?} gerrit $@
+	;;
+esac


More information about the Libreoffice-commits mailing list