diff options
| author | Vijay Bellur <vijay@gluster.com> | 2011-12-23 15:24:13 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vijay@gluster.com> | 2011-12-23 16:05:48 +0530 | 
| commit | 254e67dbd7a35d38dbe7a5f525955adeb86f5939 (patch) | |
| tree | 35887344d3e8722b704b0b23783a4625275611ca | |
| parent | 254d3a2de9d9fd645f70ece5fdba5a58e35c095c (diff) | |
Adding rfc.sh
Change-Id: Ia15b0a164a75385527103c7723ef12cf2fff4f55
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 "$@"  | 
