2009-05-31 2 views
1

Я только обошел создание ветвей темы для незавершенных функций моего проекта, которыми управляет Git. Все они очень самодостаточны таким образом, что одна ветвь темы напрямую не связана с другой ветвью темы. Тем не менее, все ветви имеют общую основу, основную ветвь, являющуюся ядром системы, ветви темы расширяют возможности в основной ветке.Пространство между подмодулями и ветвями?

Если я правильно понял, если я что-то делаю в главной ветке, которая затрагивает (m) любые ветви темы (скажем, измените API, используемый для связи между ядром и отдельными функциями), которые не распространяются к ветвям темы автоматически, так что ветви могут быть исправлены соответственно. Изменения должны быть вручную объединены или выбраны вишневыми в другие ветви.

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

Итак, я ищу способ, чтобы сказать, что определенные файлы/каталоги уникальны для определенной ветви, все остальное происходит от основной ветви. Не имея лучшей аналогии, говоря в терминах Photoshop, я хочу, чтобы мастер был фоновым слоем, и каждая ветка темы была бы частично прозрачным слоем изображения поверх него с некоторым уникальным содержимым.

+0

Я думаю, что помню, что видел дубликат этого, но я не могу его найти. – Zifre

ответ

1

Это понятие «состав» или «наследование конфигурации» не поддерживается в Git, как объясняется в вопросе «Flexible vs static branching». Только слияния позволяют вам «составить» точный набор файлов, которые вы хотите.

Функция подмодуля поможет вам идентифицировать согласованный набор файлов, которые должны иметь свой собственный жизненный цикл и быть помечены в своем собственном темпе. Это не относится к вашим функциям.

Ваш подход должен оставаться «system-based», где вы разрабатываете, маркируете и объединяете всю систему. Если что-то развивается на главной ветке, оно должно объединяться в ветви признаков.
Если функции включают в себя другой набор файлов, которые модифицируются в главной ветви, это слияние будет тривиально. Если нет, вы можете следить за mateusza's suggestion, используя промежуточную ветвь для разрешения конфликтов и оценивать результат такого слияния, сохраняя при этом отсутствие ветви.

0

Допустит, у вас есть мастер ветви и куча веток: feature1, feature2, feature3 ...

$ git checkout feature1 
$ git branch master-with-feature1 
$ git checkout master-with-feature1 
$ git merge master 

Каждый раз, когда вы делаете какие-либо изменения в мастер или feature1 вы можете оформить на мастеров -with-feature1 и объединить их.

+0

Кажется, слишком много ручного труда, чтобы быть полезным на практике. –

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