Вопрос

Мы используем GIT для управления нашим проектом.

Каждый проект имеет «ядро» (например, структура от того, кого мы создали проект), поэтому в каждом проекте есть как минимум 2 филиала отдаленных:

  • 1 репозиторий для этой основной структуры.
  • 1 репозиторий на клиент проект.

У нас также есть модули. Каждый модуль имеет ядро, которое содержит основную функциональность, и мы индивидуализуем каждый модуль из этой базы для каждого клиента.

  • Таким образом, у нас есть подмодули, которые включены в каждый клиент -проект
  • Но я не могу понять, как справиться с персонализацией части подмодулей.

Как GIT может помочь мне, если я хочу добавить несколько новых файлов в подмодуль, которые необходимо использовать только в 1 конкретном клиентском проекте?

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

PS.: Мы используем Smartgit.

Это было полезно?

Решение

Это сценарий, в котором вы можете использовать git-subtree (слияние)

Если вы внесли изменения в другой проект в вашем хранилище, они могут захотеть слияния из вашего проекта. Это возможно с помощью поддерева - он может сдвинуть пути в вашем дереве, а затем они могут объединить только соответствующие части вашего дерева.

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

Идея слияния поддерево состоит в том, что у вас есть два проекта, и один из проектов карт в подкаталог другого и наоборот. Когда вы указываете слияние поддерево, GIT достаточно умный, чтобы понять, что один - поддерево другого и слияние соответствующим образом - это довольно удивительно.

http://progit.org/book/ch6-7.html

Но я полагаю, что вы хотите использовать подмодули, а не отойти от них.

Другие советы

Я не могу, чтобы каждый подмодуль независимы.

Несмотря на то, что подмодуль является «независимым», поскольку в качестве отдельного репозитория он имеет свой собственный набор коммитов и филиалов, вы все равно можете определить филиал клиента-проекта на указанном подмодуле.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top