"git push" к Герриту с отслеживающей веткой

Для внесения изменений в Gerrit требуется довольно эзотерическая команда

git push origin HEAD:refs/for/branchname

Мы написали это, но я ищу способ сделать это изначально. С мощным конфигом git похоже, что я могу предварительно сконфигурировать большую его часть [1], так что просто git push достаточно... почти. Я застрял на remote.<name>.push refspec.

Я уже могу создать ветку отслеживания тем, чтобы git pull (без других параметров) будет тянуть изменения из удаленного апстрима в мою ветку темы. Тем не менее, с Gerrit, push и fetch refspecs не совпадают: один выбирает (сливается) из refs/heads/trackbranch, но один подталкивает к refs/for/trackbranch[2]

Я могу настроить push refspec в remote.<name>.pushОднако синтаксис довольно простой: если я поставлюpush = refs/heads/*:refs/for/*

Тогда это будет пытаться подтолкнуть мой t-foo ветка темы к refs/for/t-foo, Но у Git есть информация, что t-foo отслеживает trackbranch, Могу ли я определить refspec, чтобы git автоматически пытался выдвинуть t-foo к его refs/for/trackbranch?

В настоящее время мы используем сценарий для этого, и я полагаю, что я мог бы определить push refspec для каждой ветви темы (возможно, с помощью большего количества сценариев). Я надеюсь, что для этого есть собственный способ Git, так что нам не нужно полагаться на собственные пользовательские сценарии для нашей команды.

[1] путем определения ветви отслеживания с git checkout origin/upstream_branch -b topic_branch или в существующей ветви git branch --set-upstream-to origin/upstream_branch

[2] подталкивает к refs/for/* создает набор изменений для просмотра. При наличии соответствующих разрешений можно нажать refs/heads/* чтобы обойти обзор, но это сводит на нет большую часть точки Gerrit.

2 ответа

По какой-то причине:-) Я пошел дальше и попытался написать скрипт для установки записей git config, а затем обнаружил, что, похоже, нет никакого способа получить нужные результаты напрямую.

В качестве альтернативы я написал сценарий, который выдвигает "имя проверки геррита" (примечание: я фактически не использовал геррит, так что это практически не проверялось, хотя я запускал его с --dry-run вариант и похоже, что он делает правильные вещи - но я ожидаю, что вы можете изменить его). Конечно, это, вероятно, функционально так же, как ваш собственный скрипт.

В любом случае, вы могли бы иметь глобальный или общесистемный псевдоним, git config alias.review или что-то такое, что запускает скрипт, чтобы вы могли сказать git review или же git review branch, Псевдоним будет просто review = !sh /path/to/script (аргументы будут переданы автоматически в этот момент).

Я поставил сценарий здесь: http://web.torek.net/torek/git/gerrit-review.sh.txt (.txt расширение только для того, чтобы браузеры просматривали его по умолчанию, а не загружали его по умолчанию).

Вы смотрели в плагин git-review? Это должно отвечать всем требованиям вполне счастливо!

https://pypi.python.org/pypi/git-review

Другие вопросы по тегам