Управление набором связанных репозиториев относительно Git
У меня есть набор связанных репозиториев, которыми я хочу управлять.
Данные, которые я хочу сохранить, - это "проекты", которые состоят из "библиотек", которые состоят из "единиц".
Каждая библиотека хранится во вложенной папке проекта, и каждый блок хранится во вложенной папке библиотеки.
Чтобы иметь возможность повторно использовать библиотеки и блоки между несколькими проектами, я планирую их хранить в соответствии с этой схемой:
repositories/projects/project1
repositories/projects/project2>
repositories/projects/project...
repositories/libraries/library1
repositories/libraries/library2
repositories/libraries/library...
repositories/units/unit1
repositories/units/unit2
repositories/units/unit...
Я хотел бы ссылаться на библиотеки, используемые в проекте относительно (например, использует ../../libraries/library1
), а также ссылаться на единицу в библиотеке относительно.
Библиотеки и блоки могут быть изменены только путем изменения проекта, содержащего их. Таким образом, библиотеки и репозитории блоков могут быть голыми, если это необходимо.
Репозиторий на сервере должен выглядеть одинаково (тот же макет папок).
Я уже пробовал использовать подмодули и подход "read-tree/subtree merge", но не смог найти способ указать относительные URL-адреса в хранилищах в случае подмодуля и нажать на изменения в подход чтения-дерева.
То, что я хотел бы сделать, это то, что если я проверю project1, он также выберет все необходимые библиотеки и единицы, и если я изменю библиотеку или единицу через проект, эти изменения можно будет легко перенаправить на сервер.
Ответы
Ответ 1
Субмодули - это путь для вас и позволяют относительные URL-адреса.
Подмодуль может указать другой URL-адрес подмодуля относительно URL-адреса суперпроекта origin
. Поэтому в project1
используйте следующий
git submodule add ../library1
git submodule --init update
И все должно быть хорошо: библиотека1 будет выгружена в каталоге project1, а исходное репо - рядом с project1.