Skip to content

Commit 73b84a9

Browse files
committed
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
1 parent 0e08f4f commit 73b84a9

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed

.gitreview

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

tools/rfc.sh

+145
Original file line numberDiff line numberDiff line change
@@ -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 "$@"

0 commit comments

Comments
 (0)