web-dev-qa-db-ja.com

HEADのgitエイリアス:refs / for / master

Gerritを構成していますが、次のように記述したくありません。

git Push gerrit HEAD:refs/for/master

私は書きたいです:

git Push review

.git/configを変更することは可能だと確信していますが、機能させることはできません。

25
Macarse

レビューとレビューなしの2つの異なるプッシュタイプを設定しました。

レビュー用:

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

レビューをバイパスするには:

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

レビューをバイパスするために、プロジェクト所有者/ Gerrit管理者が行う必要のあるGerritプロジェクトの変更がいくつかあることに注意してください。 refs/*のプロジェクトに「プッシュ」権限を追加する必要があると思います(レビューをバイパスすることを許可するブランチについて具体的に理解している場合を除く)。ただし、レビューの場合、投稿に必要な権限はすでに設定されています。言い換えれば、あなたの場合

git Push gerrit HEAD:refs/for/master

上記の「レビュー」の部分は、他に何も変更せずに同様に機能するはずです。

26
Alex Brown

なぜbashエイリアスを作成しないのですか?

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

これで、次のように入力できます。

review

1つのgerritブランチよりもmoreで作業したい場合は、bashヘルパーで確認してください: https://github.com/tomwys/gerrit-bash-commands

4
Tomasz Wysocki

最善の方法は、エイリアスのGitスクリプトレットです。このようなものは「アップストリーム」ブランチに基づいて機能しますが、これをもう少しクリーンアップしたいと思います。

〜/ .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"

このように、次のように入力するだけです。

git pub

入力したとおりです。

git Push -u Origin HEAD:refs/for/master

または

git Push -u Origin HEAD:refs/for/myremote-branch

これに対する唯一の要件は、Windows上のGit Bashシェル、または多くのLinuxシェルの1つとのみ互換性があることです。

4
Ben Madsen

git-review にも興味があるかもしれません。これは、以下を提供するだけでPushを排除するだけではありません。

git review

...しかし、次のようなこともできます。

git review branchname

詳細については、上記のリンクの「使用法」セクションを確認してください。

3
Dolph

また、直接プッシュでrefs/heads /に分岐できるようにする場合は、gerrit webguiに権利を追加するだけです。

  1. プロジェクトのプロパティを開く、
  2. アクセスを選択、
  3. 参照を追加、
  4. refs/heads/*
  5. 「プッシュ」を選択
  6. タイプグループ名、
  7. refs/heads/*
  8. 保存する。

あなたがやった。

1
Rafał

たぶんあなたが探しているものと正確に一致しないかもしれませんが、あなたが:

  1. gerritの名前をreviewに変更します(git remote rename gerrit reviewを使用)。
  2. git config Push.default tracking、および
  3. git config branch.master.merge refs/for/master

次に、git Push reviewを実行すると、マスターはgerritでrefs/for/masterにプッシュされます。

ちなみに、git config branch.master.remote reviewの場合は、git Pushだけで同じものを取得できます。

1
Ryan Stewart

こんにちは、プロセスを自動化する簡単なスクリプトを作成するだけです。

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

次のように使用します。

git_review_add_config.sh group1

そして、構成する必要のある別のグループを選択します。

0
Alex

Gerritを介してマスターブランチにのみプッシュしたい場合は、.git\configに以下を追加してください

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

またはプロジェクトディレクトリで実行します

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

その後、あなたは使用することができます

git Push review

gerritにプッシュします。この方法を使用すると、任意のローカルブランチからプッシュでき、データは常にマスターブランチに送られます

0
Szymon Sadło