diff options
-rwxr-xr-x | commit.sh | 4 | ||||
-rwxr-xr-x | format-patch.sh | 60 | ||||
-rwxr-xr-x | rfc.sh | 104 |
3 files changed, 104 insertions, 64 deletions
diff --git a/commit.sh b/commit.sh deleted file mode 100755 index 9cc55c52e8d..00000000000 --- a/commit.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -export EDITOR="emacs" -git commit -a -e "$@" diff --git a/format-patch.sh b/format-patch.sh deleted file mode 100755 index 12d05a03d57..00000000000 --- a/format-patch.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - - -function is_num() -{ - local num; - - num="$1"; - - [ -z "$(echo $num | sed -e 's/[0-9]//g')" ] -} - - -function guess_branch() -{ - local branch; - local src_branch; - - branch=$(git branch | grep '*' | cut -f2 -d' '); - - if [ $branch = "master" ] ; then - src_branch="master"; - else - src_branch=$(cat .git/logs/refs/heads/$branch | head -n 1 \ - | sed -r -e 's/.*( [^ ]*)$/\1/g' | cut -f2 -d/); - fi - - echo $src_branch -} - - -function main() -{ - local branch; - local bug; - - branch=$(guess_branch); - echo - echo "Patches are always to be associated with a bug ID. If there is no " - echo "bug filed in bugzilla for this patch, it is highly suggested to file" - echo "a new bug with a description and reasoning of this patchset. If this" - echo "is a new feature, then file a new enhancement bug with a brief " - echo "summary of the feature as the description." - echo - echo -n "Enter bug ID (from http://bugs.gluster.com/): " - read bug; - - [ -z "$bug" ] || is_num $bug || { - log "bug ID should be a valid bug number"; - exit; - } - - if [ -z "$bug" ]; then - git format-patch -s "$@"; - else - git format-patch -s --subject-prefix="PATCH BUG:$bug" "$@"; - fi -} - -main "$@" diff --git a/rfc.sh b/rfc.sh new file mode 100755 index 00000000000..aa097cc1582 --- /dev/null +++ b/rfc.sh @@ -0,0 +1,104 @@ +#!/bin/bash -e + + +branch="master"; + + +function 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; +} + + +function is_num() +{ + local num; + + num="$1"; + + [ -z "$(echo $num | sed -e 's/[0-9]//g')" ] +} + + +function rebase_changes() +{ + git fetch --all; + + EDITOR=$0 git rebase -i origin/$branch; +} + + +function editor_mode() +{ + if [ $(basename "$1") = "git-rebase-todo" ]; then + sed -i 's/^pick /reword /g' "$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 -i "s/^\(Change-Id: .*\)$/\1\nBUG: $bug/g" $1; + return; + done + fi + + cat <<EOF +$0 - editor_mode called on unrecognized file $1 with content: +$(cat $1) +EOF + return 1; +} + + +function assert_diverge() +{ + git diff origin/$branch..HEAD | grep -q .; +} + + +function 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 [ -z "$bug" ]; then + git push origin HEAD:refs/for/$branch/rfc; + else + git push origin HEAD:refs/for/$branch/bug-$bug; + fi +} + +main "$@" |