summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2017-10-25 09:07:29 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-01 03:05:19 -0400
commit7e493175deaafa2df4084f0036c8d5effb9f47cc (patch)
tree375e2626ba37a59b0ae338867408229f70f63aaf /scripts
parentb5b9e71bd50844287dfc38acfa1acf4249c11371 (diff)
scripts: rfr: query gerrit for git sha1
The gerrit search supports git sha1 revisions, so use that directly when given a git commit. This changes the behaviour such that the change-id found from the commit message is not used implicitly, which removes ambiguity. Change-Id: Ifac1002421886dc73234b530d937395aae5addee Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1585437 GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rfr28
1 files changed, 14 insertions, 14 deletions
diff --git a/scripts/rfr b/scripts/rfr
index b225bc3a..bca32d3b 100755
--- a/scripts/rfr
+++ b/scripts/rfr
@@ -113,6 +113,13 @@ def commit_info_from_gerrit_change_id(change_id):
113 113
114 return gerrit_query(change_id) 114 return gerrit_query(change_id)
115 115
116def commit_info_from_git_sha1(rev):
117 """
118 Return a dict with all the gerrit info from a git sha1 rev.
119 """
120
121 return gerrit_query(rev)
122
116def commit_info_from_gerrit_cl(cmt): 123def commit_info_from_gerrit_cl(cmt):
117 """ 124 """
118 Return a dict with all the gerrit info from a Gerrit URL. 125 Return a dict with all the gerrit info from a Gerrit URL.
@@ -124,28 +131,21 @@ def commit_info_from_gerrit_cl(cmt):
124 131
125 return gerrit_query(cl) 132 return gerrit_query(cl)
126 133
127def gerrit_change_id_from_git_commit(cmt_id): 134def git_sha1_from_commit(commit_ish):
128 """ 135 """
129 Return the gerrit Change-Id from the passed git cmt_id. Returns None if 136 Return sha1 revision from a commit-ish string, or None if this doesn't
130 this doesn't appear to be a cmt_id or doesn't have a Change-Id line. 137 appear to be a commit.
131 """ 138 """
132 139
133 cid_re = re.compile(r'Change-Id: (I[a-z0-9]{40})') 140 prog = subprocess.Popen('git rev-parse %s' % commit_ish, shell=True,
134
135 # First obtain the commit message itself.
136 prog = subprocess.Popen('git show --stat %s' % cmt_id, shell=True,
137 stdout=subprocess.PIPE, stderr=subprocess.PIPE) 141 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
138 142
139 stdout_data, stderr_data = prog.communicate() 143 stdout_data, stderr_data = prog.communicate()
140 if prog.returncode != 0: 144 if prog.returncode != 0:
141 print('`git show %s\' failed?!' % cmt_id) 145 print('`git rev-parse %s\' failed?!' % commit_ish)
142 return None 146 return None
143 147
144 m = cid_re.search(stdout_data.decode('utf-8')) 148 return stdout_data.decode('utf-8')
145 if m:
146 return m.group(1)
147
148 return None
149 149
150def indent_lines(text, ind): 150def indent_lines(text, ind):
151 """ 151 """
@@ -220,7 +220,7 @@ def main():
220 elif get_gerrit_url_id(cmt): 220 elif get_gerrit_url_id(cmt):
221 info = commit_info_from_gerrit_cl(cmt) 221 info = commit_info_from_gerrit_cl(cmt)
222 else: 222 else:
223 info = commit_info_from_gerrit_change_id(gerrit_change_id_from_git_commit(cmt)) 223 info = commit_info_from_git_sha1(git_sha1_from_commit(cmt))
224 224
225 if info: 225 if info:
226 commits_info.append(info) 226 commits_info.append(info)