2013-07-25 2 views
0

У меня есть репозиторий git с веткой master, которая является главной.Как справиться с иерархией ветвей git

У меня есть иерархия следующим образом:

 master 
     | 
     core 
/ |  \ 
V100 V200 V300 

V100, V200, V300 являются различными модулями, которые зависят от ядра.

На этих модулях будет работать несколько человек, а также изменять модуль core из любого из ветвей V*.

Проблема в том, что я действительно не знаю, как справиться с этой ситуацией, не копируя файлы, не изменяя их в ядре ядра, не изменяя его, а затем вытягивая изменения из ветвей V*.

Есть ли лучший способ справиться с этими изменениями? Или, если основной модуль никогда не будет изменен с помощью ветки V*?

Примечание: Модуль core не может быть протестирован автономно, он содержит только абстрактные классы, интерфейсы и библиотеки, используемые в других ветвях.

ответ

2

Похоже, что вы путаете ветвление с возможностью поддерживать различные модули. Филиалы должны быть версиями одного и того же кода.

Например, у вас может быть мастер, разработка и несколько ветвей функций. Ваша главная ветка - это код, который вы развернули. Ваша ветка развития может быть кодом, который вы готовите для развертывания. И ваши филиалы функций - ваши новые, незавершенные функции.

По мере завершения функции вы объединяете свою ветвь в ветку разработки. После того, как у вас будет готов релиз, вы объедините свою ветку разработки в мастер и выпустите свой код. И так далее, это идет как цикл.

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

Возможно, вы можете включить модуль Core в другие репозитории как подмодуль. Что вы делаете, так это создать каталог в вашем основном модуле, например V100/core, а затем установить его как подмодуль. Затем он ссылается на конкретную фиксацию основного репо. Таким образом, вы можете быть уверены, что ваши проекты связаны с версией подмодуля, который работает на них.

Подмодули имеют некоторые тонкости и gotchas, и из-за этого у них плохое имя. Я считаю, что при правильном использовании они действительно работают очень хорошо. Чтобы узнать о них подробнее, зарегистрируйтесь http://git-scm.com/book/en/Git-Tools-Submodules

+0

Спасибо, я проверю это! –

Смежные вопросы