в Git подмодуля отслеживание последних
мы перемещаем наш (огромный) проект в git, и мы думаем об использовании подмодулей. Наш план состоит в том,чтобы иметь три разных головы в суперпроекте: релиз,стабильный, последний. Руководство проекта будет обрабатывать выпуск и стабильные ветви. Они будут перемещать подмодули по мере необходимости.
проблема заключается в" последней " голове. Хотелось бы суперпроекты "свежую" голову, чтобы отслеживать главной ветви всех подмодулей (автоматически). А также было бы здорово, если бы он показал история всех фиксаций в подмодуле.
Я посмотрел на gitslave, но это не совсем то, что мы хотим. Есть предложения?
1 ответ:
Обновление Марта 2013
Git 1.8.2 добавлена возможность отслеживать ветки.
"
git submodule" начал изучать новый режим интеграция с кончиком удаленной ветви (в отличие от интеграции с фиксацией, записанной в gitlink суперпроекта).# add submodule to track master branch git submodule add -b master [URL to Git repo]; # update your submodule git submodule update --remoteсм. также учебник Vogella по подмодулям.
в разделе "как сделать существующий подмодуль отслеживает ветвь" (если бы у вас уже был подмодуль, вы бы сейчас хотели отслеживать ветку)
Примечание:
git submodule add -b . [URL to Git repo]; ^^^посмотреть
git submoduleна странице:особое значение
.указывает, что имя ветви в подмодуле должно совпадать с именем текущей ветви в текущем репозитории.
посмотреть совершить b928922727d6691a3bdc28160f93f25712c565f6:
submodule add: если--branchдается, запишите его в.gitmodulesэто позволяет легко записывать
submodule.<name>.branchна.gitmodulesпри добавлении нового подмодуля. С этим патчем,$ git submodule add -b <branch> <repository> [<path>] $ git config -f .gitmodules submodule.<path>.branch <branch>снижает до
$ git submodule add -b <branch> <repository> [<path>]это означает, что будущие вызовы
$ git submodule update --remote ...будет получать обновления из той же ветви, что вы использовали для инициализации подмодуля, который, как правило, то, что вы хотите.
подпись: У. Тревор Кинг
оригинальный ответ (февраль 2012):
подмодуль-это единственная фиксация, на которую ссылается родительское РЕПО.
Поскольку это РЕПО Git само по себе, "история всех коммитов" доступна черезgit logв рамках подмодуля.так что для родителя автоматически отслеживать последнюю фиксацию данной ветви подмодуля, это должно было бы:
- cd в подмодуле
- git fetch / pull, чтобы убедиться, что он имеет последние фиксации на правой ветви
- компакт-диск обратно в родительский РЕПО
- добавить и зафиксировать для записи новой фиксации подмодуля.
gitslave (что вы уже посмотрели), кажется, лучше всего подходит,в том числе для операция фиксации.
немного раздражает вносить изменения в подмодуль из-за требования проверить правильность ветви подмодуля, внести изменения, зафиксировать, а затем перейти в суперпроект и зафиксировать фиксацию (или, по крайней мере, записать новое местоположение подмодуля).
другие альтернативы подробнее здесь.
Comments