git alias for HEAD:refs/for/master git alias for HEAD:refs/for/master git git

git alias for HEAD:refs/for/master


I set up two different push types, review and noreview:

for reviews:

git config remote.review.pushurl ssh://<GERRIT_HOST>:29418/<PROJECT_PATH>.gitgit config remote.review.push refs/heads/*:refs/for/*git push review # this will push your current branch up for review

to bypass review:

git config remote.noreview.pushurl ssh://<GERRIT_HOST>:29418/<PROJECT_PATH>.gitgit config remote.noreview.push refs/heads/*git push noreview # this will push your current branch up, bypassing review

Note that there are some Gerrit Project changes that need to be made by the Project Owner/Gerrit Admin in order to bypass a review as well. I think the "Push" permission will need to be added to the project for refs/* (unless you're getting specific about what branch you'll allow bypassing the review in). However, for reviews, the permissions needed to post in will already be set up. In other words, if your

git push gerrit HEAD:refs/for/master

is working, than the "review" part above should work as well without changing anything else.


Why don't create bash alias?

alias review="git push gerrit HEAD:refs/for/master"

Now you can just type:

review

If you want to work on more than one gerrit branch, check my bash helpers for that: https://github.com/tomwys/gerrit-bash-commands


What you're best off doing is a Git scriptlet in your alias. Something like this works based on the 'upstream' branch, although I'd like to clean this up a little bit still:

~/.gitconfig

[alias]  pub = "!f() { git push -u ${1:-origin} HEAD:`git config branch.$(git name-rev --name-only HEAD).merge | sed -e 's@refs/heads/@refs/for/@'`; }; f"

This way, you can simply type:

git pub

and it's just like you typed:

git push -u origin HEAD:refs/for/master

or

git push -u origin HEAD:refs/for/myremote-branch

The only requirement for this is that it is only compatible with the Git Bash shell on Windows, or one of the many Linux shells.