~ubuntu-branches/ubuntu/trusty/horizon/trusty

« back to all changes in this revision

Viewing changes to tools/rfc.sh

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-03-09 11:50:22 UTC
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: package-import@ubuntu.com-20120309115022-fri2gwuw9vhnrjvt
Tags: upstream-2012.1~rc1~20120308.1479
ImportĀ upstreamĀ versionĀ 2012.1~rc1~20120308.1479

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh -e
 
2
# Copyright (c) 2010-2011 Gluster, Inc. <http://www.gluster.com>
 
3
# This initial version of this file was taken from the source tree
 
4
# of GlusterFS. It was not directly attributed, but is assumed to be
 
5
# Copyright (c) 2010-2011 Gluster, Inc and release GPLv3
 
6
# Subsequent modifications are Copyright (c) 2012 OpenStack, LLC.
 
7
#
 
8
# GlusterFS is free software; you can redistribute it and/or modify
 
9
# it under the terms of the GNU General Public License as published
 
10
# by the Free Software Foundation; either version 3 of the License,
 
11
# or (at your option) any later version.
 
12
#
 
13
# GlusterFS is distributed in the hope that it will be useful, but
 
14
# WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
16
# General Public License for more details.
 
17
#
 
18
# You should have received a copy of the GNU General Public License
 
19
# along with this program.  If not, see
 
20
# <http://www.gnu.org/licenses/>.
 
21
 
 
22
 
 
23
branch="master";
 
24
 
 
25
set_hooks_commit_msg()
 
26
{
 
27
    top_dir=`git rev-parse --show-toplevel`
 
28
    f="${top_dir}/.git/hooks/commit-msg";
 
29
    u="https://review.openstack.org/tools/hooks/commit-msg";
 
30
 
 
31
    if [ -x "$f" ]; then
 
32
        return;
 
33
    fi
 
34
 
 
35
    curl -o $f $u || wget -O $f $u;
 
36
 
 
37
    chmod +x $f;
 
38
 
 
39
    GIT_EDITOR=true git commit --amend
 
40
}
 
41
 
 
42
add_remote()
 
43
{
 
44
    username=$1
 
45
    project=$2
 
46
 
 
47
    echo "No remote set, testing ssh://$username@review.openstack.org:29418"
 
48
    if project_list=`ssh -p29418 -o StrictHostKeyChecking=no $username@review.openstack.org gerrit ls-projects 2>/dev/null`
 
49
    then
 
50
        echo "$username@review.openstack.org:29418 worked."
 
51
        if echo $project_list | grep $project >/dev/null
 
52
        then
 
53
            echo "Creating a git remote called gerrit that maps to:"
 
54
            echo "  ssh://$username@review.openstack.org:29418/$project"
 
55
            git remote add gerrit ssh://$username@review.openstack.org:29418/$project
 
56
        else
 
57
            echo "The current project name, $project, is not a known project."
 
58
            echo "Please either reclone from github/gerrit or create a"
 
59
            echo "remote named gerrit that points to the intended project."
 
60
            return 1
 
61
        fi
 
62
 
 
63
        return 0
 
64
    fi
 
65
    return 1
 
66
}
 
67
 
 
68
check_remote()
 
69
{
 
70
    if ! git remote | grep gerrit >/dev/null 2>&1
 
71
    then
 
72
        origin_project=`git remote show origin | grep 'Fetch URL' | perl -nle '@fields = split(m|[:/]|); $len = $#fields; print $fields[$len-1], "/", $fields[$len];'`
 
73
        if add_remote $USERNAME $origin_project
 
74
        then
 
75
            return 0
 
76
        else
 
77
            echo "Your local name doesn't work on Gerrit."
 
78
            echo -n "Enter Gerrit username (same as launchpad): "
 
79
            read gerrit_user
 
80
            if add_remote $gerrit_user $origin_project
 
81
            then
 
82
                return 0
 
83
            else
 
84
                echo "Can't infer where gerrit is - please set a remote named"
 
85
                echo "gerrit manually and then try again."
 
86
                echo
 
87
                echo "For more information, please see:"
 
88
                echo "\thttp://wiki.openstack.org/GerritWorkflow"
 
89
                exit 1
 
90
            fi
 
91
        fi
 
92
    fi
 
93
}
 
94
 
 
95
rebase_changes()
 
96
{
 
97
    git fetch;
 
98
 
 
99
    GIT_EDITOR=true git rebase -i origin/$branch || exit $?;
 
100
}
 
101
 
 
102
 
 
103
assert_diverge()
 
104
{
 
105
    if ! git diff origin/$branch..HEAD | grep -q .
 
106
    then
 
107
        echo "No changes between the current branch and origin/$branch."
 
108
        exit 1
 
109
    fi
 
110
}
 
111
 
 
112
 
 
113
main()
 
114
{
 
115
    set_hooks_commit_msg;
 
116
 
 
117
    check_remote;
 
118
 
 
119
    rebase_changes;
 
120
 
 
121
    assert_diverge;
 
122
 
 
123
    bug=$(git show --format='%s %b' | perl -nle 'if (/\b([Bb]ug|[Ll][Pp])\s*[#:]?\s*(\d+)/) {print "$2"; exit}')
 
124
 
 
125
    bp=$(git show --format='%s %b' | perl -nle 'if (/\b([Bb]lue[Pp]rint|[Bb][Pp])\s*[#:]?\s*([0-9a-zA-Z-_]+)/) {print "$2"; exit}')
 
126
 
 
127
    if [ "$DRY_RUN" = 1 ]; then
 
128
        drier='echo -e Please use the following command to send your commits to review:\n\n'
 
129
    else
 
130
        drier=
 
131
    fi
 
132
 
 
133
    local_branch=`git branch | grep -Ei "\* (.*)" | cut -f2 -d' '`
 
134
    if [ -z "$bug" ]; then
 
135
        if [ -z "$bp" ]; then
 
136
            $drier git push gerrit HEAD:refs/for/$branch/$local_branch;
 
137
        else
 
138
            $drier git push gerrit HEAD:refs/for/$branch/bp/$bp;
 
139
        fi
 
140
    else
 
141
        $drier git push gerrit HEAD:refs/for/$branch/bug/$bug;
 
142
    fi
 
143
}
 
144
 
 
145
main "$@"