1.使用gerrit query
问题:
a.查询分支是以提交时间(创作)时间排序,非合入时间
b.查询一笔提交,并获取父节点,递归向上查询。强merge节点(code base升级等),没有在gerrit形成记录,当查询merge节点时获取不到信息,递归断
2.gerrit rest API
查询功能类似gerrit query
3.gitweb网页(最终)
p=project.git
a.查询提交链接
http://gerrit.xxx/gitweb?p=xxx.git;a=commit;h=xxx(hash)
b.查询单链h=版本里hash
http://gerrit.xxx/gitweb?p=xxx.git;a=shortlog;h=xxx(hash)
实现:
a)在jenkins部署一个服务,输入固件版本地址,和需要核查的一系列提交链接
b)轮询每个提交链接,获取changeid、gerrit服务器地址,通过ssh -x gerrit.xx.xx query --format TEXT --current-patch-set changeid 获取该笔提交hash、project git、merge datetime
注:目前只发现这种方式,如果使用curl/python requests请求链接,会进行跳转;使用reset API也没找到好的方式
c)获取project git后,去版本固件里查询固定的hash
d)使用python requests先登录gerrit服务器(传递data数据,chrome F12查看过程),获取session,使用同一session去查询固定hash的gitweb shortlog,使用bs4解析界面后获取是否包含提交链接的hash,没有可以在gitweb加pg=x,进行翻页,需定义最大翻页。
注:为加快核查,每个gitweb shortlog最后一项,通过gitweb commit查询合入时间,跟b中获取的提交链接时间比对
e)通过上可核查是否包含