Ответ 1
Руководство является простым в отношении Git пределов:
- один репо за проект
- основной проект с подмодулями.
Идея состоит не в том, чтобы хранить все в одном гигантском репозитории git, а строить небольшое репо в качестве основного проекта, который будет ссылаться на правильные коммиты других репозиториев, каждый из которых представляет проект или собственный компонент.
OP Paul Alexander комментарии:
Это похоже на поддержку "externals", предоставляемую подрывной деятельностью.
Мы пробовали это и посчитали чрезвычайно громоздким постоянно обновлять ссылки на версии во внешних средах, поскольку проекты разрабатываются одновременно с зависимостями друг от друга. Есть ли другой вариант?
@Paul: да, вместо обновления версии из основного проекта вы либо:
- разрабатывайте свои подпроекты непосредственно из основного проекта (как описано в True Nature подмодулей),
- или вы ссылаетесь на суб-репо a
origin
на тот же субрепо, который разрабатывается в другом месте: оттуда вам просто нужно извлечь из этого подрепо изменения, внесенные в другое место.
В обоих случаях вы должны не забыть зафиксировать основной проект, чтобы записать новую конфигурацию. Здесь нет "внешнего" свойства. Весь процесс более естественен.
Честно говоря, это звучит как настоящая боль, и все, что требует от разработчиков делать что-то вручную каждый раз, просто станет обычным источником ошибок для обслуживания.
Полагаю, я рассмотрю автоматизацию этого с помощью некоторых сценариев в суперпроекте.
Я ответил:
Честно говоря, вы, возможно, были правы... это до последнего Git release 1.7.1. git diff
и git status
оба научились учитывать состояния подмодулей, даже если они выполнялись из основного проекта.
Вы просто не можете пропустить модификацию подмодуля.
Сказанное:
- Подмодули
- отличаются от внешних SVN: см. "Почему git подмодули несовместимы с внешними svn?"
- Управление подмодулями может быть сложным: см. "Как работает подмодуль git?.