Как мне адаптировать мою стратегию svn: externals для подмодулей git?

Мне трудно понять, как изменить свое мышление на мерзавец и столкнулся со следующей проблемой. У меня есть ситуация, когда у нас есть общий движок и несколько проектов, которые используют движок. Внутренние группы разработчиков и сторонние группы могут работать над проектами, использующими общий механизм, и хотят максимально использовать HEAD общего механизма во время разработки, всего за несколько недель до отправки, когда общий механизм будет помечен и разветвленный, и проект будет использовать эту ветвь. Проектные группы обычно работают только над одним проектом, но могут вносить изменения в общий движок во время отладки или добавления функций. Когда они фиксируют эти изменения, наша система сборки запускается, чтобы найти любые проблемы, которые они могли внести с фиксацией.

Я (думаю, я) хочу использовать эту же модель с новым проектом / новой компанией. В SVN структура была примерно такая: shared_engine

project_in_dev-+
               +- svn:external shared_engine:head
project_about_to_ship-+
                      +-svn:external shared_engine_rev1_branch

Это сработало очень хорошо:

Разработчики проекта могут сделать одну команду, чтобы проверить все зависимости, которые им понадобятсяРазработчики проекта могли бы легко выполнять работу над движком и подключаться к общему движку.Мы могли бы легко изменить или изменить общий движок, который проект использовал с внешними и ревизиямиОбновления движка легко получить благодаря ежедневному обновлению корневого проекта.

Хорошо, теперь я перешел на git, и подмодули SEEM стали новым способом работы с внешним кодом, но, похоже, я потерял некоторые функции.

Это многоэтапный процесс, чтобы получить все зависимости проекта. Разработчики проекта должны сделать git-клон, а затем обновить подмодуль git init / git -recursiveЭто многошаговый процесс обновления корневого проекта и подмодуля, поэтому, если другой разработчик вносит изменения в корневой проект, соответствующие изменениям подмодуля, вы не сразу получаете соответствующий код и можете сильно запутаться.Подмодуль заблокирован для определенного коммита, и если вы внесете изменения в подмодуль, у вас будут проблемы с его настройкой для работы с головкой общего механизмаУ меня нет контроля над тем, какую версию общего движка разработчик разработал, не дав инструкций по обновлению до

Итак, мои вопросы таковы:

Прежде всего, верны ли приведенные выше предположения о подмодулях? Кажется, это основано на том, что я прочитал, но я не уверен на 100%, так как я все еще разбираюсь в gitЕсли мои предположения верны, я подхожу к проблеме с правильным процессом? Нужно ли корректировать свое мышление при использовании git? Другими словами, есть ли другой способ сделать то, что я пытаюсь сделать, и нужно думать о процессе по-другому?Предполагая, что я не взорвал первые два, и подмодули не будут делать то, что я хочу, что будет? Я читал о слияниях поддеревьев, но они тоже не совсем правильные, так как похоже, что я не могу внести изменения в общий код обратно в хранилище.

Большое спасибо за вашу помощь и терпение. Если это не очевидно, я очень новичок в git, и мне это нравится, и я хочу принять это, но у меня все еще есть некоторые концептуальные недоразумения, потому что у меня, вероятно, был поврежден мозг за годы использования центральных репо. Я хочу учиться! Кроме того, я занимался весь день и просматривал различные посты в блогах, вопросы о стекопереработке и т. Д., И я до сих пор не понимаю, мне, очевидно, нужно, чтобы это было подробно описано в моей ситуации. У меня нет коллег по этому поводу, есть ли какие-нибудь группы пользователей в Сиэтле, где могут быть какие-то гит-гуру? :)

Ответы на вопрос(1)

Ваш ответ на вопрос