Pygerrit - Client library for interacting with Gerrit Code Review

Pygerrit是一个Python库,提供通过SSH或REST API与Gerrit Code Review交互的简单接口。它依赖于paramiko和requests库。安装后,可以通过配置~/.ssh/config或~/.netrc文件进行连接。库支持SSH接口执行命令和处理事件流,以及通过REST API获取用户开放变更等信息。
部署运行你感兴趣的模型镜像

https://github.com/sonyxperiadev/pygerrit

 

Pygerrit provides a simple interface for clients to interact with Gerrit Code Review via ssh or the REST API.

This repository is no longer actively maintained. Development has moved to pygerrit2.

Prerequisites

Pygerrit has been tested on Ubuntu 10.4 and Mac OSX 10.8.4, with Python 2.6.x and 2.7.x. Support for other platforms and Python versions is not guaranteed.

Pygerrit depends on the paramiko and requests libraries.

Installation

To install pygerrit, simply:

$ pip install pygerrit

Configuration

For easier connection to the review server over ssh, the ssh connection parameters (hostname, port, username) can be given in the user's .ssh/config file:

Host review
  HostName review.example.net
  Port 29418
  User username

For easier connection to the review server over the REST API, the user's HTTP username and password can be given in the user's .netrc file:

machine review login MyUsername password MyPassword

For instructions on how to obtain the HTTP password, refer to Gerrit's HTTP upload settings documentation.

SSH Interface

The SSH interface can be used to run commands on the Gerrit server:

>>> from pygerrit.ssh import GerritSSHClient
>>> client = GerritSSHClient("review")
>>> result = client.run_gerrit_command("version")
>>> result
<GerritSSHCommandResult [version]>
>>> result.stdout
<paramiko.ChannelFile from <paramiko.Channel 2 (closed) -> <paramiko.Transport at 0xd2387d90L (cipher aes128-cbc, 128 bits) (active; 0 open channel(s))>>>
>>> result.stdout.read()
'gerrit version 2.6.1\n'
>>>

Event Stream

Gerrit offers a stream-events command that is run over ssh, and returns back a stream of events (new change uploaded, change merged, comment added, etc) as JSON text.

This library handles the parsing of the JSON text from the event stream, encapsulating the data in event objects (Python classes), and allowing the client to fetch them from a queue. It also allows users to easily add handling of custom event types, for example if they are running a customised Gerrit installation with non-standard events:

>>> from pygerrit.client import GerritClient
>>> client = GerritClient("review")
>>> client.gerrit_version()
'2.6.1'
>>> client.start_event_stream()
>>> client.get_event()
<CommentAddedEvent>: <Change 12345, platform/packages/apps/Example, master> <Patchset 1, 5c4b2f76297f04fbab77eb8c3462e087bc4b6f90> <Account Bob Example (bob.example@example.com)>
>>> client.get_event()
<CommentAddedEvent>: <Change 67890, platform/frameworks/example, master> <Patchset 2, c7d4f9956c80b1df66a66d66dea3960e71de4910> <Account John Example (john.example@example.com)>
>>> client.stop_event_stream()
>>>

Refer to the example script for a more detailed example of how the SSH event stream interface works.

REST API

This simple example shows how to get the user's open changes, authenticating to Gerrit via HTTP Digest authentication using an explicitly given username and password:

>>> from requests.auth import HTTPDigestAuth
>>> from pygerrit.rest import GerritRestAPI
>>> auth = HTTPDigestAuth('username', 'password')
>>> rest = GerritRestAPI(url='http://review.example.net', auth=auth)
>>> changes = rest.get("/changes/?q=owner:self%20status:open")

Refer to the rest_example script for a more detailed example of how the REST API interface works.

Copyright and License

Copyright 2011 Sony Ericsson Mobile Communications. All rights reserved.

Copyright 2012 Sony Mobile Communications. All rights reserved.

Licensed under The MIT License. Please refer to the LICENSE file for full license details.

 

 

 

example:

#!/usr/bin/env python

 

import os

import sys

import re

 

 

# SSH Interface

"""

from pygerrit.ssh import GerritSSHClient

client = GerritSSHClient("hostname", username="gerrit", port=29418)

result = client.run_gerrit_command("version")

print result.stdout.read()

"""

 

# Event Stream

from pygerrit.client import GerritClient

client = GerritClient("hostname", username="gerrit", port=29418)

print client.gerrit_version()

#client.start_event_stream()

#print client.get_event()

#client.stop_event_stream()

 

"""

print dir(client)

print client.run_command('ls-groups').stdout.read()

print type(client.run_command('ls-groups').stdout.read())

"""

 

for x in client.query("owner:gerrit branch:testing"):

   print dir(x)

   print 'project:', x.project

   print 'branch:', x.branch

   print 'url:', x.url

   print 'ChangeId:', x.change_id

   print 'Revision:', x.current_patchset.revision

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值