git alias pour HEAD: refs / for / master

je suis à la configuration de Gerrit et je voudrais éviter d'écrire:

git push gerrit HEAD:refs/for/master

je voudrais écrire:

git push review

je suis sûr qu'il est possible de modifier .git/config mais je ne peux pas le faire fonctionner.

24
demandé sur Macarse 2011-09-15 02:46:24
la source

8 ответов

j'ai mis en place deux types de push différents, review et noreview:

pour les commentaires:

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

pour la révision de contournement:

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

notez Qu'il y a des changements au projet Gerrit qui doivent être faits par le propriétaire du projet/administrateur Gerrit afin de contourner un examen. Je pense que la permission" Push " devra être ajoutée au projet pour les refs/* (à moins que vous ne soyez plus précis sur la branche que vous autoriserez à contourner l'examen). Toutefois, pour les examens, les permissions nécessaires à l'affichage seront déjà configurées. En d'autres termes, si votre

git push gerrit HEAD:refs/for/master

fonctionne, que la partie "révision" ci-dessus devrait fonctionner aussi bien sans rien changer d'autre.

24
répondu Alex Brown 2012-11-23 18:23:08
la source

pourquoi ne pas créer Bash alias?

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

maintenant vous pouvez taper:

review

Si vous souhaitez travailler sur plus que l'on gerrit branche, vérifier mon bash aides pour que: https://github.com/tomwys/gerrit-bash-commands

5
répondu Tomasz Wysocki 2011-12-12 09:37:39
la source

ce que vous faites de mieux est un script Git dans votre alias. Quelque chose comme ceci fonctionne basé sur la branche "upstream", bien que j'aimerais nettoyer ça un peu encore:

~/.gitconfig

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

de Cette façon, vous pouvez simplement taper:

git pub

et c'est comme vous avez tapé:

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

ou

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

la seule condition pour cela est qu'il soit seulement compatible avec le shell Git Bash sur Windows, ou l'un des de nombreux shells Linux.

4
répondu Ben Madsen 2012-01-04 22:40:17
la source

Vous pourriez également être intéressé par git-examen, ce qui élimine non seulement le push simplement pour:

git review

... mais aussi vous permet de faire des choses comme:

git review branchname

consultez la section Utilisation du lien ci-dessus pour en savoir plus.

3
répondu Dolph 2013-12-06 22:55:39
la source

Peut-être pas exactement ce que vous cherchez, mais si vous avez:

  1. Renommer gerritreview (avec git remote rename gerrit review),
  2. git config push.default tracking et
  3. git config branch.master.merge refs/for/master,

alors vous pouvez git push review, et votre maître sera poussé à refs/for/master sur gerrit.

Et d'ailleurs, si vous git config branch.master.remote review, alors vous pouvez simplement git push et obtenir la même chose.

1
répondu Ryan Stewart 2011-09-15 05:42:33
la source

Et si vous voulez autoriser le push direct de la direction générale dans les refs/heads/ il suffit d'ajouter un droit de gerrit l'interface web:

  1. ouvrir les propriétés du projet,
  2. choisir d'accès,
  3. Ajouter Une Référence,
  4. réfs / heads/*
  5. choisir "Push"
  6. saisissez le nom du groupe,
  7. réfs / heads/*
  8. enregistrer.

vous êtes fait.

1
répondu Rafał 2012-08-20 21:40:02
la source

ceux d'entre vous qui veulent pousser seulement à master branch à travers gerrit, ajoutez ce qui suit à .git\config

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

ou exécuter dans le cadre du projet dir

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

alors vous pouvez utiliser

git push review

pour le pousser à Gerrit. En utilisant cette méthode, vous pouvez push à partir de n'importe laquelle de vos branches locales et les données iront toujours à la branche principale

0
répondu Szymon Sadło 2015-11-02 13:56:29
la source

Salut il suffit de créer un script simple pour automatiser le processus:

   #!/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  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

   [ "" == "" ] && 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"

Vous allez l'utiliser comme:

git_review_add_config.sh group1

et sélectionnez le groupe que vous devez configurer.

0
répondu Alex 2017-04-25 12:25:03
la source

Autres questions sur