git alias for HEAD:refs/for/master

前端 未结 8 2213
予麋鹿
予麋鹿 2020-12-02 09:18

I am configuring Gerrit and I would like to avoid writing:

git push gerrit HEAD:refs/for/master

I would like to write:

相关标签:
8条回答
  • 2020-12-02 09:26

    And if you want to allow direct push to branch in refs/heads/ you simply add a right in gerrit web gui:

    1. open project properties,
    2. pick access,
    3. Add Reference,
    4. refs/heads/*
    5. pick "Push"
    6. type group name,
    7. refs/heads/*
    8. save.

    youre done.

    0 讨论(0)
  • 2020-12-02 09:28

    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

    0 讨论(0)
  • 2020-12-02 09:30

    Those of you who want to push only to master branch through gerrit, add the following to .git\config

    [remote "review"]                                                        
        push = HEAD:refs/for/master                 
        pushurl = ssh://GERRIT_URL:29418/PROJECT_NAME
    

    or execute in project dir

    git config remote.review.push HEAD:refs/for/master
    git config remote.review.pushurl ssh://GERRIT_URL:29418/PROJECT_NAME
    

    Then you can use

    git push review
    

    to push to Gerrit. Using this method you can push from any of your local branches and the data will always go to master branch

    0 讨论(0)
  • 2020-12-02 09:31

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

    for reviews:

    git config remote.review.pushurl ssh://<GERRIT_HOST>:29418/<PROJECT_PATH>.git
    git 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>.git
    git 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.

    0 讨论(0)
  • 2020-12-02 09:32

    Hi just create a simple script to automate the process:

       #!/bin/bash
    
       GROUP1_REVIEWER="group1 list of mail separated by space"
       GROUP2_REVIEWER="group2 list of mail separated by space"
       GROUP3_REVIEWER="group3 list of mail separated by space"
    
       ORIGIN=$(git config --get remote.origin.url)
       [ $? -ne 0 ] && echo "Git repo not found; EXIT" && exit 1
    
       case $1 in
           group1) REVIEWER_LIST=$GROUP1_REVIEWER ;;
           group2) REVIEWER_LIST=$GROUP2_REVIEWER ;;
           group3) REVIEWER_LIST=$GROUP3_REVIEWER ;;
           *) echo "Please specify one existent group"; exit 1 ;;
       esac
    
       [ "$1" == "" ] && echo "Please specify one existent group" && exit 1
    
       pushurl=${ORIGIN}
       push="HEAD:refs/for/master"
       receivepack="$(printf "git receive-pack "; for reviewer in $REVIEWER_LIST ; do printf -- "--reviewer $reviewer "; done)"
    
       # check if review remote is already present
       git config -l | grep remote.review 1>/dev/null 2>&1
       [ $? -eq 0 ] && echo "Remote review already present; configure it manually; EXIT" && exit 1
    
       # start config
       echo "Adding new remote review config"
       git config remote.review.pushurl $pushurl
       git config remote.review.push $push
       git config remote.review.receivepack "$receivepack"
    

    You will the use as:

    git_review_add_config.sh group1
    

    And select the different group you need to configure.

    0 讨论(0)
  • 2020-12-02 09:34

    Maybe not exactly what you're looking for, but if you:

    1. Rename gerrit to review (with git remote rename gerrit review),
    2. git config push.default tracking, and
    3. git config branch.master.merge refs/for/master,

    then you can git push review, and your master will be pushed to refs/for/master on gerrit.

    And, incidentally, if you git config branch.master.remote review, then you can just git push and get the same thing.

    0 讨论(0)
提交回复
热议问题