Browse Source

Add .gitreview and rfc.sh.

rfc.sh helps with gerrit reviews.
.gitreview lets git-review know how to find the gerrit repo.

Change-Id: I84439d53114a0f63bea33e6122b2d2a3ac10617f
tags/essex-1
James E. Blair 8 years ago
parent
commit
73b84a97ae
2 changed files with 149 additions and 0 deletions
  1. 4
    0
      .gitreview
  2. 145
    0
      tools/rfc.sh

+ 4
- 0
.gitreview View File

@@ -0,0 +1,4 @@
1
+[gerrit]
2
+host=review.openstack.org
3
+port=29418
4
+project=openstack/horizon.git

+ 145
- 0
tools/rfc.sh View File

@@ -0,0 +1,145 @@
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) 2011 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 "$@"

Loading…
Cancel
Save