Расположение репозитория МЕРЗАВЦА для сервера с несколькими проектами

Одна из вещей, мне нравится приблизительно способ, которым мне настраивали Подверсию, - то, что у меня может быть единственный основной репозиторий с несколькими проектами. Когда я хочу работать над проектом, я могу проверить просто тот проект. Как это

\main
    \ProductA
    \ProductB
    \Shared

затем

svn checkout http://.../main/ProductA

Как новый пользователь мерзавцу я хочу исследовать немного лучшей практики в поле перед согласием на определенный рабочий процесс. Из того, что я читал до сих пор, мерзавец хранит все в единственной .git папке в корне дерева проекта. Таким образом, я мог сделать одну из двух вещей.

  1. Настройте отдельный проект для каждого продукта.
  2. Настройте единственный крупный проект и сохраните продукты в sub папках.

Между продуктами существуют зависимости, таким образом, единственный крупный проект кажется соответствующим. Мы будем использовать сервер, где все разработчики могут совместно использовать свой код. Я уже получил эту работу по SSH & HTTP и той любви первой части. Однако репозитории в SVN уже - многие, ГБ в размере, настолько перетаскивающем вокруг всего репозитория на каждой машине, походит на плохую идею - тем более, что мы тарифицированы за чрезмерную сетевую пропускную способность.

Я предположил бы, что репозитории проекта ядра Linux являются одинаково большими, таким образом, должен быть надлежащий способ обработать это с Мерзавцем, но я просто еще не понял это.

Есть ли какие-либо инструкции или лучшие практики для работы с очень большими многопроектными репозиториями?

95
задан Bob Wintemberg 19 May 2013 в 12:26
поделиться

1 ответ

Рекомендации просты в отношении ограничений Git :

Идея состоит не в том, чтобы хранить всего в одном гигантском репозитории Git, а в создании небольшого репо в качестве основного проекта, который будет ссылаться на правильные коммиты других репозиториев, каждый из которых представляет проект или общий компонент. собственноручно.


OP Пол Александер комментирует :

Это похоже на "внешнюю" поддержку, предоставляемую Subversion.
Мы попробовали это и обнаружили, что постоянно обновлять ссылки на версии во внешних компонентах крайне затруднительно, поскольку проекты разрабатываются одновременно с зависимостями друг от друга. Есть ли другой вариант ??

@Paul: да, вместо обновления версии из основного проекта вы либо:

  • разрабатываете свои подпроекты непосредственно из основного проекта (как объяснено в " Истинный характер подмодули "),
  • или вы ссылаетесь в суб-репо на источник в отношении того же суб-репо, разрабатываемого в другом месте: оттуда вам просто нужно извлечь из этого суб-репо изменения сделано в другом месте.

В обоих случаях вы не должны забыть зафиксировать основной проект, чтобы записать новую конфигурацию. Здесь нет «внешних» свойств, которые нужно обновлять. Весь процесс намного естественнее.

Честно говоря, это звучит как настоящая боль, и все, что требует от разработчиков делать что-то вручную каждый раз, просто станет регулярным источником ошибок или обслуживания.
Думаю, я постараюсь автоматизировать это с помощью некоторых скриптов в суперпроекте.

Я ответил:

Честно говоря, возможно, вы были правы ... это было до последней версии Git 1.7.1 .
git diff и git status научились учитывать состояния подмодулей, даже если они выполняются из основного проекта.
Вы просто не можете пропустить модификацию подмодуля.

При этом:

65
ответ дан 24 November 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: