Как правильно добавить субмодуль с нестандартным refspec?
Мы используем Gerrit для проверки кода.
Gerrit хранит проверенный код в нестандартном ссылочном пути - refs/changes
, Итак, ссылка на коммит выглядит так refs/changes/95/295/2
, Я хочу добавить проект из Gerrit в мой суперпроект в качестве подмодуля.
Я могу сделать это в два этапа:
- добавить мой проект в качестве подмодуля в commit-hash, указанный в данный момент master
- выполнять
git fetch origin refs/changes/95/295/2 && git checkout FETCH_HEAD
и совершить изменение.
Но когда я пытаюсь оформить заказ на мой суперпроект и сделать git update --init
Git сообщает об ошибке. Git не может найти хеш в подмодуле, потому что git не видел ссылок в refs/changes
по умолчанию, и не загружайте объекты из них.
Хорошо, я могу исправить это с выполнением git config --add remote.origin.fetch '+refs/changes/*:refs/remotes/origin/changes/*'
в моем репозитории Gerrit, затем повторите обновление субмодуля, и это будет хорошо.
Вопрос в том, могу ли я выполнить подмодуль "добавить" и "инициализация / обновление" за один шаг, как в обычном рабочем процессе? По сути, мне нужна функция для установки refspec перед началом выполнения "clone"/"pull"/"submodule add"/"sumbodule update".
1 ответ
Вы не хотите выдвигать изменения с подмодулем, указывающим на коммит в refs / changes. Геррит хранит код там во время проверки, но после того, как проверка завершена и изменения внесены, к ней можно получить доступ из стандартных ссылок / заголовков /. Ваши подмодули должны указывать на проверенный и отправленный код в refs/heads/BRANCH_NAME.