Я настраиваю Gerrit
, и я бы хотел не писать:
git push gerrit HEAD:refs/for/master
Я бы хотел написать:
git push review
Я уверен, что возможно изменить .git/config
, но я не могу заставить его работать.
Я настраиваю Gerrit
, и я бы хотел не писать:
git push gerrit HEAD:refs/for/master
Я бы хотел написать:
git push review
Я уверен, что возможно изменить .git/config
, но я не могу заставить его работать.
Я установил два разных типа push, review и noreview:
для отзывов:
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 Admin, чтобы обойти обзор. Я думаю, что разрешение "Push" должно быть добавлено в проект для refs/* (если только вы не уточните, в какой ветки вы разрешите в обход обзора). Тем не менее, для отзывов, разрешения, необходимые для публикации, уже будут настроены. Другими словами, если ваш
git push gerrit HEAD:refs/for/master
работает, чем выше рассмотренная выше часть выше, не изменив ничего.
Почему бы не создать псевдоним bash?
alias review="git push gerrit HEAD:refs/for/master"
Теперь вы можете просто ввести:
review
Если вы хотите работать с больше чем одна ветвь gerrit, проверьте мои помощники 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 '[email protected]/heads/@refs/for/@'`; }; f"
Таким образом, вы можете просто ввести:
git pub
и он точно так же, как вы набрали:
git push -u origin HEAD:refs/for/master
или
git push -u origin HEAD:refs/for/myremote-branch
Единственным требованием для этого является то, что он совместим только с оболочкой Git Bash в Windows или одной из многих оболочек Linux.
Вас также может заинтересовать git-review, который не только устраняет push
, просто обеспечивая:
git review
... но также позволяет делать такие вещи, как:
git review branchname
Ознакомьтесь с разделом "Использование" по ссылке выше для более подробной информации.
Возможно, не совсем то, что вы ищете, но если вы:
gerrit
в review
(с помощью git remote rename gerrit review
),git config push.default tracking
иgit config branch.master.merge refs/for/master
, тогда вы можете git push review
, и ваш мастер будет нажат на refs/for/master
на gerrit.
И, кстати, если вы git config branch.master.remote review
, тогда вы можете просто git push
и получить то же самое.
И если вы хотите разрешить прямой push для ветки в refs/heads/, вы просто добавляете право в gerrit web gui:
youre done.
Те из вас, кто хочет нажать только, чтобы овладеть веткой через gerrit, добавьте следующее в .git\config
[remote "review"]
push = HEAD:refs/for/master
pushurl = ssh://GERRIT_URL:29418/PROJECT_NAME
или выполнить в проекте dir
git config remote.review.push HEAD:refs/for/master
git config remote.review.pushurl ssh://GERRIT_URL:29418/PROJECT_NAME
Затем вы можете использовать
git push review
нажать на Gerrit. Используя этот метод, вы можете нажать из любого из ваших локальных ветвей, и данные всегда будут отправляться в мастер-ветвь
Привет, просто создайте простой script, чтобы автоматизировать процесс:
#!/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
И выберите другую группу, которую необходимо настроить.