zoukankan      html  css  js  c++  java
  • 使用 ssh 从 Gerrit 获取 patch 信息

    使用命令行(ssh)对Gerrit进行查询, 官方地址:https://review.openstack.org/Documentation/cmd-query.html

    程序例子

    import os, json
    
    def get_patch_info(GERRIT_HOME, patch_id):
        cmd_str='ssh %s gerrit query --format=JSON --comments change:%d'%(GERRIT_HOME, patch_id)
        process = os.popen(cmd_str)
        output = process.readlines()[0] # 参见说明
        process.close()
        jsn_data = json.loads(output) # 返回的是dict
        return jsn_data

    说明:查询结果永远会多返回一行查询统计的信息在最后一行, 即使查询结果是空:
    {"moreChanges": false,"runTimeMilliseconds": 80,"rowCount": 1,"type": "stats"}

    如果用shell,可以使用 jq 做解析。jq 能够对 json 结果进行格式化和挑选。

    安装 sudo apt-get install jq

    ssh review.example.com gerrit query --format=JSON --patch-sets --files change:89535 | jq . > 89535-pretty.txt
    
    ssh review.example.com gerrit query --format=JSON --patch-sets --files change:89535 > 89535-pretty.txt
    
    cat 89535-pretty.txt | jq .
    
    cat 89535-pretty.txt | jq ".status" # 取出该 patch 的 status
    
    cat 89535-pretty.txt | jq ".patchSets[0].files" # 取出第一个patchSet 修改的文件信息
    
    cat 89535-pretty.txt | jq "keys" # 列出所有key
    
    cat 89535-pretty.txt | jq "has('owner')" # 是否存在该key

    以下转自:http://blog.chinaunix.net/uid-24774106-id-3830242.html

    与JSON相关的我就暂时介绍到这里,希望进一步了解jq并使用的可以去http://stedolan.github.io/jq/manual/,希望了解源码实现的,可以去https://github.com/stedolan/jq,意料之中的事情是 作者用来flex和bison来parse json。

    我们的示例JSON来自参考文献第一篇。

    用google搜索,kernalpanic中有篇文章介绍了jshon和json.sh提供了另外的思路。

    参考文献:
    How to parse JSON string via command line on Linux
     jq - command-line JSON processor

  • 相关阅读:
    pymysql
    表查询
    元类
    外键约束
    Mysql知识
    C# windows服务的创建与调试
    JQuery随笔
    jQuery插件开发
    http post和put区别
    NPOI
  • 原文地址:https://www.cnblogs.com/snow-backup/p/5056963.html
Copyright © 2011-2022 走看看