diff options
author | Vijay Bellur <vijay@gluster.com> | 2011-12-22 11:19:18 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-12-22 11:19:18 +0530 |
commit | f7a1ae4531047d710bcdc03fd3216b6910834e1f (patch) | |
tree | 7605e93f1012592a730e088cb87eeed1b8e148a9 | |
parent | 1b5cc297fa1ce468f23d248b7b8dfcdd356544d7 (diff) |
Adding rfc.sh
Signed-off-by: Vijay Bellur <vijay@gluster.com>
-rwxr-xr-x | rfc.sh | 107 |
1 files changed, 107 insertions, 0 deletions
@@ -0,0 +1,107 @@ +#!/bin/sh -e + + +branch="master"; + + +set_hooks_commit_msg() +{ + f=".git/hooks/commit-msg"; + u="http://review.gluster.com/tools/hooks/commit-msg"; + + if [ -x "$f" ]; then + return; + fi + + curl -o $f $u || wget -O $f $u; + + chmod +x .git/hooks/commit-msg; +} + + +is_num() +{ + local num; + + num="$1"; + + [ -z "$(echo $num | sed -e 's/[0-9]//g')" ] +} + + +rebase_changes() +{ + git fetch; + + GIT_EDITOR=$0 git rebase -i origin/$branch; +} + + +editor_mode() +{ + if [ $(basename "$1") = "git-rebase-todo" ]; then + sed 's/^pick /reword /g' "$1" > $1.new && mv $1.new $1; + return; + fi + + if [ $(basename "$1") = "COMMIT_EDITMSG" ]; then + if grep -qi '^BUG: ' $1; then + return; + fi + while true; do + echo Commit: "\"$(head -n 1 $1)\"" +# echo -n "Enter Bug ID: " +# read bug +# if [ -z "$bug" ]; then +# return; +# fi +# if ! is_num "$bug"; then +# echo "Invalid Bug ID ($bug)!!!"; +# continue; +# fi + +# sed "/^Change-Id:/{p; s/^.*$/BUG: $bug/;}" $1 > $1.new && \ +# mv $1.new $1; +# return; + done + fi + + cat <<EOF +$0 - editor_mode called on unrecognized file $1 with content: +$(cat $1) +EOF + return 1; +} + + +assert_diverge() +{ + git diff origin/$branch..HEAD | grep -q .; +} + + +main() +{ + if [ -e "$1" ]; then + editor_mode "$@"; + return; + fi + + set_hooks_commit_msg; + + rebase_changes; + + assert_diverge; + + #bug=$(git show --format='%b' | grep -i '^BUG: ' | awk '{print $2}'); + + if [ "$DRY_RUN" = 1 ]; then + drier='echo -e Please use the following command to send your commits to review:\n\n' + else + drier= + fi + + $drier git push origin HEAD:refs/for/$branch; +} + +main "$@" |