Моя компания находится в процессе замены нашего инструмента управления версиями с Rational ClearCase на Git. У нас есть следующий сценарий разработки, и нам интересно, есть ли правильный шаблон, которому нужно следовать с Git, чтобы добиться того же поведения, что и в ClearCase.
Вот несколько основных моментов о нашей ситуации:
- We have a number of discrete applications. Let's call these AppA, AppB, and AppC.
- We also have certain files (build scripts, etc.) that are common to all of the projects. Let's call this Tools.
- For any given cut of the AppA, AppB, or AppC code, we need a specific cut of the Tools code.
- Most of our developers never modify the Tools code.
Для ClearCase мы смоделировали это следующим образом:
Components: app_a, app_b, app_c, tools
Projects: AppA, AppB, AppC, Tools
Project AppA includes app_a as a read/write component and tools as a read-only component.
Project AppB includes app_b as a read/write component and tools as a read-only component.
Project AppC includes app_c as a read/write component and tools as a read-only component.
Project Tools includes tools as a read/write component.
Each baseline for the App* projects references a baseline on both the app_* and tools compoments. When developers rebase to the recommended baseline, they pull in changes from both components.
Для Git мы думаем, что подмодули могут быть ближе всего к правильному ответу. Однако при извлечении/перебазировании репозитория кажется, что требуется дополнительный шаг для обновления кода подмодуля. В идеале мы хотели бы быть прозрачными. Кроме того, нам не обязательно знать, что изменилось в подмодуле с точки зрения родительского репозитория; нас интересует только момент времени для всего подмодуля.