Я хотел бы получить несколько советов по наилучшему управлению проектами и проектам управления версиями, которые имеют следующую структуру:
Из родительского проекта (общего для многих проектов) мне нужно получить заданную структуру каталогови файлы, то есть
.
|-- modules/
| |-- file_1_parent.py
|
|-- controllers/
|-- file_2_parent.py
Из этого родительского проекта получено несколько дочерних зависимых, которые добавляют файлы в каталоги.
Ситуация может выглядеть следующим образом (имяпроекты, к которым принадлежат файлы / каталоги, указаны в скобках)
.
|-- modules/ (parent project)
| |-- file_1_parent.py (parent project)
| |-- file_1_child.py (child project)
|
|-- controllers/ (parent project)
|-- file_2_parent.py (parent project)
|-- file_2_child.py (child project)
Если говорить конкретно, в моем случае родительский проект - это проект web2py / django, из которого я хочу получить несколько подпроектов.
Вопрос теперь в том,
- Как контролировать версии каждого проекта?
- Должен ли я иметь хранилище для родительского и дочернего проектов отдельно?
- Должен ли я относиться к родительскому проекту как к некоему пакету / библиотеке?
Я подумал о следующих подходах:
- Использование
git submodule
или git subtrees
: это не работает, потому что я из очень жесткой структуры каталогов и файлов, которая мне нужна из родительского проекта - Несколько
git remotes
в локальном проекте, то есть два git origins
, один наparent и one для дочернего проекта: что говорит против этого решения, так это то, что для развертывания проекта где-то я не могу просто запустить git clone
, но должен вручную установить несколько git remote -v origin
. - Лечениеродительский проект в виде библиотеки, которую я устанавливаю через менеджер пакетов, а затем либо устанавливаю версии установленных файлов в дочерних репозиториях, либо помещаю их в
.gitignore
: Возможно, это не решение, что не так уж и плохо, но я незнать инструмент для достижения этой цели.Возможно, существует инструмент, который может установить данную версию из репозитория github с помощью некоторой команды, такой как some_paket_manager install path/to/git/repo==v.0.0.9
- Копирование и вставка файлов из родительского проекта: я пытаюсь избежать этой ручной работы.