Я хотел бы иметь возможность накладывать другие ветви поверх существующей ветви и иметь эти ветви независимо друг от друга. Это было бы полезно, например, разрешить объединение двоичных файлов для разных подпроектов в один и тот же каталог bin
. В общем случае данный файл будет присутствовать только в одном слое., создающий ветвь объединения нескольких ветвей git.
В идеале, я бы хотел использовать unionfs для этого, но он должен каким-то образом предоставить доступ к различным каталогам .git, которые будут отображаться во всех подкаталогах одного и того же корня. В любом случае, я думаю, что unionfs на самом деле не работает? Поэтому кажется, что лучше всего поддерживать набор символических ссылок из корня репо в другие репозитории, относящиеся к слоям.
Я рассматриваю делать что-то вроде этого:
- держать каждый «слой» в отдельном хранилище
- поддерживать символические ссылки в основной репозиторий для каждого файла, который должен быть слоистым
- добавить символические ссылки на master .gitignore, чтобы они не удалялись при переключении ветвей.
- полностью несовместим с Windows, чтобы можно было редактировать файлы в их местоположении в корневом репозитории. IE использует символические ссылки вместо того, чтобы просто копировать файлы в мастер-репо.
Было бы целесообразно отслеживать идентификатор фиксации источника для каждого уровня, чтобы, например, файлы, удаленные из слоя в последующей ревизии, могли удалить свои символические ссылки из исходного репо и быть удалены из основного файл репо .gitignore.
Кажется, что такая система закончила бы работу как git submodule
, с ключевым отличием, что подмодули будут совместно вмешиваться в один и тот же корневой уровень репозитория.
Мне интересно, если у вас уже есть утилита для управления этим? Я изучил использование stg
(сложный git) для реализации такого рода структуры, но, похоже, это не чашка чая.
Хм, если ветви действительно не имеют каких-либо файлов в общем, слияние тривиально, так что ваш филиал «Союз» может быть построена (осьминога!) Объединение всех ветвей компонентов, да? – Cascabel
Я не хочу их объединять. Я хочу, чтобы они существовали как отдельные компоненты в одной структуре каталогов. В идеале я мог бы сделать что-то вроде 'git group group-of-branch checkout branch-in-the-group', не меняя, какая ветвь была выбрана в других группах ветвей. – intuited