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 "$@"  | 
