Gerrit
を構成していますが、次のように記述したくありません。
git Push gerrit HEAD:refs/for/master
私は書きたいです:
git Push review
.git/config
を変更することは可能だと確信していますが、機能させることはできません。
レビューとレビューなしの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
上記の「レビュー」の部分は、他に何も変更せずに同様に機能するはずです。
なぜbashエイリアスを作成しないのですか?
alias review="git Push gerrit HEAD:refs/for/master"
これで、次のように入力できます。
review
1つのgerritブランチよりもmoreで作業したい場合は、bashヘルパーで確認してください: https://github.com/tomwys/gerrit-bash-commands
最善の方法は、エイリアスのGitスクリプトレットです。このようなものは「アップストリーム」ブランチに基づいて機能しますが、これをもう少しクリーンアップしたいと思います。
[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つとのみ互換性があることです。
git-review にも興味があるかもしれません。これは、以下を提供するだけでPush
を排除するだけではありません。
git review
...しかし、次のようなこともできます。
git review branchname
詳細については、上記のリンクの「使用法」セクションを確認してください。
また、直接プッシュでrefs/heads /に分岐できるようにする場合は、gerrit webguiに権利を追加するだけです。
あなたがやった。
たぶんあなたが探しているものと正確に一致しないかもしれませんが、あなたが:
gerrit
の名前をreview
に変更します(git remote rename gerrit review
を使用)。git config Push.default tracking
、およびgit config branch.master.merge refs/for/master
、次に、git Push review
を実行すると、マスターはgerritでrefs/for/master
にプッシュされます。
ちなみに、git config branch.master.remote review
の場合は、git Push
だけで同じものを取得できます。
こんにちは、プロセスを自動化する簡単なスクリプトを作成するだけです。
#!/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
そして、構成する必要のある別のグループを選択します。
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にプッシュします。この方法を使用すると、任意のローカルブランチからプッシュでき、データは常にマスターブランチに送られます