Мне трудно понять, как изменить свое мышление на 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, и мне это нравится, и я хочу охватить его, но у меня все еще есть некоторые концептуальные недоразумения, потому что я, вероятно, был поврежден мозгом за годы использования центральных репозиториев. Я хочу учиться! Кроме того, я весь день работал на rtfm'ing и смотрел на различные сообщения в блогах, вопросы с stackoverflow и т.д., И я до сих пор не понимаю, я, очевидно, нуждаюсь в этом, чтобы шаг за шагом изложить свою ситуацию. У меня нет коллег, чтобы спросить об этом, какие-либо группы пользователей в районе Сиэтла, где могут быть некоторые гуру git?:)