A tool help you cherry pick patches from gerrit server
Project description
pick-patch
Help you cherry pick patches from Gerrit server
Installation
pip install pick-patch
Configuration
- Get user name and http password in gerrit setting webpage (ex. https://review.gerrithub.io/settings/#HTTPCredentials)
- Add user name and http password in ~/.netrc (ex. machine review.gerrithub.io login susu9 password XXXOOOXXXOO)
- Now you are good to go. (script parses ~/.netrc by default)
Example
# Get patch https://review.gerrithub.io/c/susu9/pick-patch/+/460654
pick-patch -g https://review.gerrithub.io -i . 460654
# Use alias shortcut
alias pick-hub='pick-patch -g https://review.gerrithub.io'
pick-hub -i . 460654
Custimization
You may want to customize following variables in pick-patch
REPO = 'repo'
CONNECT_TIMEOUT = 30
FETCH_PROTOCOL_ORDER = 'http ssh git'
DEFAULT_NETRC_PATH = '~/.netrc'
DEFAULT_GERRIT_SERVER = 'TBD'
DELIMITER = '-' * 80
PREVIEW = 'git log --no-decorate -1'
Features
- Input a list of change numbers, pick-patch can help you cherry pick patches from Gerrit server
- Reolve install path automatically (if your project is created by Repo). You can cherry pick multiple patches in different repositories at the same time
$pick-patch -g https://gerrit.mycompany.com 1234 5566 7788/1
Getting patches from 'https://gerrit.mycompany.com' ...
Installing patches ...
[kernel]
Pick: https://gerrit.mycompany.com/kernel refs/changes/34/1234/5
------------------------------------------------------------
...
------------------------------------------------------------
[middleware]
Pick: https://gerrit.mycompany.com/middleware refs/changes/66/5566/3
------------------------------------------------------------
...
------------------------------------------------------------
[app]
Pick: https://gerrit.mycompany.com/app refs/changes/88/7788/1
------------------------------------------------------------
...
------------------------------------------------------------
- Support gerrit search changes and cherry pick
$pick-patch -g https://gerrit.mycompany.com -q 'branch:master after:"2018-01-01"'
Querying change numbers from 'https://gerrit.mycompany.com' ...
Search for 'branch:master after:"2018-01-01"'
--------------------------------------------------------------------------------
1234 - kernel: add defconfig
5566 - middleware: fix playback issue
7788 - app: Update UI
(Total: 3 changes)
--------------------------------------------------------------------------------
Getting patches from 'https://gerrit.mycompany.com' ...
Installing patches ...
[kernel]
Pick: https://gerrit.mycompany.com/kernel refs/changes/34/1234/5
------------------------------------------------------------
...
------------------------------------------------------------
[middleware]
Pick: https://gerrit.mycompany.com/middleware refs/changes/66/5566/3
------------------------------------------------------------
...
------------------------------------------------------------
[app]
Pick: https://gerrit.mycompany.com/app refs/changes/88/7788/2
------------------------------------------------------------
...
------------------------------------------------------------
Usage
usage: pick-patch [-h] [-u USER] [-p PASSWORD] [-q QUERY] [--query-only]
[-r PREVIEW] [-g GERRIT] [-d] [-n NETRC_FILE] [-m NAME.xml]
[-i INSTALL_PATH] [-F] [-N] [-x EXE] [-v]
[change_num [change_num ...]]
positional arguments:
change_num ex. '12345', '12345/1'
optional arguments:
-h, --help show this help message and exit
-u USER, --user USER gerrit user id
-p PASSWORD, --password PASSWORD
gerrit HTTP password
-q QUERY, --query QUERY
query command ex. 'branch:master status:merged
after:"2018-11-17 22:06:00"'
--query-only do not install patch
-r PREVIEW, --preview PREVIEW
preview command for changes ex. 'git log --oneline -1'
(default: git log --no-decorate -1)
-g GERRIT, --gerrit GERRIT
gerrit server url ex. 'https://gerrit.mycompany.com
(default: TBD)'
-d, --dryrun show what would be done
-n NETRC_FILE, --netrc-file NETRC_FILE
netrc path (default: ~/.netrc)
-m NAME.xml, --manifest NAME.xml
assign manifest file to resolve patch install path
instead of using repo command
-i INSTALL_PATH, --install-path INSTALL_PATH
assign patch install path instead of resolving path by
repo command or manifest
-F, --full-path display the full install path instead of the relative
install path
-N, --name-path display the project name instead of the relative
install path
-x EXE, --exec EXE append command after all changes installed in each
project
-v, --verbose show more logs
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for pick_patch-1.0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6baf9597a0e045fa64a45af670ed9d2e4d2e31276fdd9e727b3c913969d3a9ea |
|
MD5 | a7dd61a89dc06c8dfd3717e765fcf41a |
|
BLAKE2b-256 | d864aefe211674aa631344b2c1dc1c607823313279c33deb3f42163d4cb6e6c7 |