Как правильно добавить субмодуль с нестандартным 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.

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