Я настраиваю Git с Gerrit Code Review и ищу способ сделать необходимые команды Git относительно простыми для пользователей, которые могут быть новичками в Git.
Команды, которые я сейчас запускаю для новой ветки функций, по существу (предполагается, что Gerrit имеет значение origin
):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
Это запускает новый рабочий пакет work1234
, разветвленный от некоторого baseline
, а последний push создает ветвь в Gerrit и устанавливает восходящий поток. Итак .git/config
выглядит примерно так:
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
Теперь Gerrit хочет, чтобы новые коммиты для проверки были перенесены на специальный refspec, например, refs/for/work1234
. Я могу сделать это вручную с помощью:
git push origin work1234:refs/for/work1234
Что мне нужно сделать, это найти способ настройки .git/config
, чтобы простой git push
переместил текущую ветвь в refspec на удаленный сервер, который требуется Gerrit. Я просмотрел следующие области git config
:
-
branch.<name>.*
- похоже, нет какой-либо конкретной опции для установки push refspec -
push.default
- Я вроде хочуupstream
здесь -
remote.<name>.push
- Я пробовалrefs/heads/*:refs/for/*
здесь, ноgit push
всегда хочет вытолкнуть все локальные ветки в этом случае, в то время как мне просто нужна текущая ветка
Если я не могу сделать Git сделать это сам по себе, я напишу небольшую обертку script, которая полностью специфицирует refspec. Тем не менее, было бы лучше, если бы Git мог надавить на нужное место изначально.