Наши репозитории git находятся в Gerrit. Коллега поддерживает 2 репозитория main
и sub
. Он хочет включить sub
в main
как поддерево. Вот что мы уже попробовали:
git clone repo_url_main -b dev main
cd main
git subtree add -P foo/bar repo_url_sub master
touch foo/bar/baz.txt
git add .
git commit -m 'foo.bar.baz.tt'
git subtree push -P foo/bar repo_url_sub master
Первая проблема заключается в том, что git subtree push
не удается, потому что его учетная запись не имеет разрешения напрямую отправлять коммиты без проверки. Рецензия - это то, что он хочет.
Для репо без поддерева мы используем git push origin HEAD:refs/for/master
для создания рецензии. Поэтому мы пытаемся git subtree push -P foo/bar repo_url_sub master:refs/for/master
, и это тоже не получается. Git жалуется, что master:refs/for/master
не является действительным реф. Я нахожу git subtree push -P <prefix> <repository> <ref>
в руководстве. Последняя часть - ref
вместо refspec
. Так что master:refs/for/master
здесь не ожидается.
А потом мы попробуем git subtree push -P foo/bar repo_url_sub refs/for/master
. Толчок успешен, но результат не ожидается. Вместо изменения отзыва создается ветка refs/for/master
. После нескольких попыток мы находим, что, какой бы ни была последняя ссылка, она всегда расширяется до refs/heads/...
. Даже refs/heads/master
расширен до refs/heads/refs/heads/master
.
Обходные пути, о которых мы думали до сих пор:
Используйте инструмент РЕПО Google для управления 2-мя репо, так каксделано для AOSP, который требует дополнительных навыков и немного излишним.
Используйте git submodule
, что более хлопотно.
Включитьлокальный перевод sub
репо как поддерево в main
. Сначала git subtree push
для обновления master
в репо передачи, а затем в репо передачи используйте git push repo_url_sub HEAD:refs/for/master
для создания изменений обзора. Но мы можем предвидеть хаос, когда задействованы многие сопровождающие.
Существуют ли какие-либо параметры или конфигурации git, которые могут указать git subtree push
, как правильно создавать изменения обзора в Gerrit? Спасибо за любые идеи.