Я бы хотел иметь возможность наложить другие ветви поверх существующей ветви и сделать так, чтобы эти ветви были пересмотрены независимо. Это было бы полезно, например, чтобы позволить двоичным файлам для различных подпроектов быть объединенными в один каталог bin
. В общем случае данный файл будет представлен только в одном слое.
В идеале, я думаю, я бы использовал unionfs для достижения этой цели, но он должен был бы каким-то образом обеспечить доступ к различным каталогам .git, которые должны отображаться во всех подкаталогах одного и того же корня. В любом случае, я думаю, что unionfs на самом деле не работает? Так что, кажется, лучше всего поддерживать набор символических ссылок из корня репо в другие репозитории, связывающиеся со слоями.
Я собираюсь сделать что-то вроде этого:
- хранить каждый «слой» в отдельном хранилище
- поддерживает символические ссылки в главном репо на каждый файл, который должен быть наслоен
- добавить символические ссылки на мастер .gitignore, чтобы они не были удалены при переключении веток.
- быть полностью несовместимым с Windows, чтобы можно было редактировать файлы в их расположении в корневом хранилище. IE использует символические ссылки вместо простого копирования файлов в главное хранилище.
Было бы целесообразно отслеживать исходный идентификатор фиксации каждого слоя, чтобы, например, для файлов, удаленных из слоя в последующей ревизии, можно было удалить свои символические ссылки из исходного репо и удалить из .gitignore главного репо. файл.
Похоже, что такая система в конечном итоге будет работать примерно так же, как git submodule
, с ключевым отличием в том, что подмодули будут совместно размещаться на том же корневом уровне хранилища.
Мне интересно, есть ли уже утилита для управления этим? Я попытался использовать stg
(составной git) для реализации такого рода структуры, но, похоже, это не его чашка чая.