summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2023-04-17 10:40:04 -0500
committerJoshua Watt <JPEWhacker@gmail.com>2023-04-17 11:40:36 -0500
commitc015c1aa845f8db8f386eefa3181e2da4b3c007a (patch)
treeac38cd0c036fab75408056e29586086844a5a253
parent8faa62d1e241bab5d0d8781e76c836cc3ce8b45d (diff)
downloadzuul-c015c1aa845f8db8f386eefa3181e2da4b3c007a.tar.gz
gerrit: Handle case where commit has no parents
If a commit has no parents (e.g. the first commit in a repository), the HTTP request to gerrit to the revision files endpoint must not specify the parent=1 query parameter. Otherwise, gerrit will return an HTTP 400 error with the message 'invalid parent number: 1'. Explicitly check for this by examining if any parents are present for the current revision before adding the query parameter Change-Id: I3f93899dc79ebc716223ecc6f5adecd0f1ce9b3e
-rw-r--r--zuul/driver/gerrit/gerritconnection.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/zuul/driver/gerrit/gerritconnection.py b/zuul/driver/gerrit/gerritconnection.py
index 6efca17c5..990b7b235 100644
--- a/zuul/driver/gerrit/gerritconnection.py
+++ b/zuul/driver/gerrit/gerritconnection.py
@@ -1476,8 +1476,14 @@ class GerritConnection(ZKChangeCacheMixin, ZKBranchCacheMixin, BaseConnection):
data = self.get(query)
related = self.get('changes/%s/revisions/%s/related' % (
number, data['current_revision']))
- files = self.get('changes/%s/revisions/%s/files?parent=1' % (
- number, data['current_revision']))
+
+ files_query = 'changes/%s/revisions/%s/files' % (
+ number, data['current_revision'])
+
+ if data['revisions'][data['current_revision']]['commit']['parents']:
+ files_query += '?parent=1'
+
+ files = self.get(files_query)
return data, related, files
def queryChange(self, number, event=None):