[Development] Convenient script for contributors: git gpush
marius.storm-olsen at nokia.com
marius.storm-olsen at nokia.com
Mon Apr 23 22:14:27 CEST 2012
I've just pushed a convenience script to the qtrepotools repository,
which makes it easier to push patch-sets with reviewers added.
If you ensure that you have <qt5>/qtrepotools/bin in your path, you can
git gpush +<reviewer1> +<reviewer2> =<CC user1> =<CC user2>
This pushes HEAD to the remote 'gerrit' to the remote branch which HEAD
is tracking, and ensures that reviewer1 and reviewer2 are added as
reviewers to every commit pushed.
The script handles aliases, and I've added a few IRC nicks to the alias
list already. Contributions welcome for missing IRC aliases.
Note that you can add your own local aliases too simply by
git config --global gpush.alias.<IRC nick> <Gerrit user>
(note that $TRB below means the tracking remote branch, most
often 'master', if you are not working on some special branch.)
# Pushes HEAD:refs/for/$TRB to 'gerrit', without any reviewers
git gpush +mariuso =thiago
# Pushes HEAD:refs/for/$TRB to 'gerrit', adding me as a reviewer
# and sends Thiago a CC mail.
git gpush :refs/for/buildsystem
# Pushes HEAD:refs/for/buildsystem to 'gerrit', no reviewers
git gpush myremote +mstormo
# Pushes HEAD:refs/for/$TRB to 'myremote', adding me as a reviewer
git gpush some-branch: +stormols
# Pushes some-branch:refs/for/$TRB to 'gerrit', adding me as
# a reviewer
git gpush -n -v +mariusso +thiago
# Does a verbose dry-run of the push, showing alias resolving
# and the final 'git push' command used (comma-separated arguments)
which produces an output like:
mariusso = stormols
thiago = thiago-intel
+git,push,-n,-v,--receive-pack=git receive-pack --reviewer=stormols
Pushing to ssh://firstname.lastname@example.org:29418/qt/qtrepotools
* [new branch] HEAD -> refs/for/master
git gpush [opts] [remote] [[sha1/ref-from]:[ref-to]] [+<reviewer>]
[=<CC user>] [-- <push opts>]
Pushes changes to Gerrit and adds reviewers and CC to the patch
This script is used to push patch sets to Gerrit, and at the same
time add reviewers and CCs to the patch sets pushed.
You can use email addresses, Gerrit usernames or aliases for the
name of the reviewers/CCs. Aliases are read from the
located next to the script, then from the git config which may
have aliases set either locally in the current repository,
globally (in your ~/.gitconfig), or system-wide.
You can and alias in your global git config like this:
git config --global gpush.alias.<alias key> <alias value>
and if you only want it local in the current repository, just drop
the --global option.
If no sha1 or ref-from is specified or configured, 'HEAD' is used.
You may configure a ref-from like this
git config gpush.ref-from <ref-from value>
If no ref-to is specified or configured, the remote tracking
branch for 'ref-from' is used as
'refs/for/<remote tracking branch>'.
You may configure a ref-to like this
git config gpush.ref-to <ref-from value>
If no remote is specified or configured, 'gerrit' is used. You may
configure a remote like this:
git config gpush.remote <remote name>
If all the options above have been populated, the remainder
options are passed on directly to the normal 'git push' command.
If you want to avoid specifying all options first, any options
specified after a '--' are also passed on directly to the
underlying 'git push' command.
Shows the alias resolving, and final 'git push' command as a
comma-separated list of arguments.
Do everything except actually send the updates.
Can be combined with --verbose to see the final command gpush
Reports all registered aliases.
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
You may use this file under the terms of the 3-clause BSD license.
More information about the Development