Есть ли в git какая-то встроенная стратегия управления репозиторием?

В настоящее время я пытаюсь придумать стратегию управления версиями для переноса кода нашей компании и файлов документов из централизованного SCM (Perforce) в Git. Контент в Perforce - это всего лишь одно большое хранилище, где хранятся все проекты, я хочу разбить его на несколько небольших Git-репозиториев по ряду причин.

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

Я нашел подмодуль git, но похоже, что он предназначен для создания репозитория с содержимым других репозиториев, и я не хочу управлять содержимым различных репозиториев, кроме самих репозиториев.

Первоначально я думал о плоской файловой системе на нашем сервере:

/repos
   -repo1.git
   -repo2.git
   -...
   -repoN.git

а затем просто команда git, чтобы запросить этот каталог для всех имен репозитория и комментарий о содержимом (вроде как вход на сервер, переход к /repos каталог и работает git log). Я думал, что смогу сделать /repo сам по себе git репозиторий (репозиторий репозиториев), а затем делать именно то, что я только что сказал, но это выглядит так... un-git-y.

Итак, мои вопросы:

  1. Я скучаю по любому построенному git инструменты / функции, которые предназначены для управления несколькими хранилищами, как это?
  2. Правильно ли я считаю, что git-submodule не то, что я ищу, чтобы помочь справиться с этим?
  3. Есть ли хорошие стратегии, которые вы видели для этого типа установки?

1 ответ

Если вы хотите чистое решение Git, то вы ищете именно git-submodule,

Особенно, когда вы говорите:

Я думал, что могу сделать / репо сам Git-репозиторий (репозиторий репозиториев)

Это именно то, что подмодули.

Родительский репо будет отслеживать один файл - .gitmodules, который связывает пути с ревизиями других репозиториев.


Однако по своему опыту я пришел к выводу, что подмодули Git не идеальны, особенно когда вы имеете дело с неопытными пользователями Git. Это может вызвать проблемы при переключении веток или внесении изменений в подмодули. Некоторые клиенты Git с графическим интерфейсом не имеют полной поддержки субмодулей.

Но если вы просто хотите отслеживать эти папки, вы можете использовать субмодули.


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

Это решение очень хорошо работает для библиотек поставщиков в рамках проекта приложения. И вы можете использовать менеджер пакетов / зависимостей для их обновления или просто cd а также git pull,

Другие вопросы по тегам