Есть ли в git какая-то встроенная стратегия управления репозиторием?
В настоящее время я пытаюсь придумать стратегию управления версиями для переноса кода нашей компании и файлов документов из централизованного SCM (Perforce) в Git. Контент в Perforce - это всего лишь одно большое хранилище, где хранятся все проекты, я хочу разбить его на несколько небольших Git-репозиториев по ряду причин.
У меня сейчас проблема в том, как мне проиндексировать все эти репозитории, чтобы их можно было легко найти. Насколько я могу судить, Git не имеет встроенных инструментов для управления несколькими репозиториями.
Я нашел подмодуль git, но похоже, что он предназначен для создания репозитория с содержимым других репозиториев, и я не хочу управлять содержимым различных репозиториев, кроме самих репозиториев.
Первоначально я думал о плоской файловой системе на нашем сервере:
/repos
-repo1.git
-repo2.git
-...
-repoN.git
а затем просто команда git, чтобы запросить этот каталог для всех имен репозитория и комментарий о содержимом (вроде как вход на сервер, переход к /repos
каталог и работает git log
). Я думал, что смогу сделать /repo
сам по себе git
репозиторий (репозиторий репозиториев), а затем делать именно то, что я только что сказал, но это выглядит так... un-git-y.
Итак, мои вопросы:
- Я скучаю по любому построенному
git
инструменты / функции, которые предназначены для управления несколькими хранилищами, как это? - Правильно ли я считаю, что
git-submodule
не то, что я ищу, чтобы помочь справиться с этим? - Есть ли хорошие стратегии, которые вы видели для этого типа установки?
1 ответ
Если вы хотите чистое решение Git, то вы ищете именно git-submodule
,
Особенно, когда вы говорите:
Я думал, что могу сделать / репо сам Git-репозиторий (репозиторий репозиториев)
Это именно то, что подмодули.
Родительский репо будет отслеживать один файл - .gitmodules
, который связывает пути с ревизиями других репозиториев.
Однако по своему опыту я пришел к выводу, что подмодули Git не идеальны, особенно когда вы имеете дело с неопытными пользователями Git. Это может вызвать проблемы при переключении веток или внесении изменений в подмодули. Некоторые клиенты Git с графическим интерфейсом не имеют полной поддержки субмодулей.
Но если вы просто хотите отслеживать эти папки, вы можете использовать субмодули.
Другой способ - игнорировать такие папки в основном репо и иметь отдельные репозитории Git в этих папках. Git отлично работает в этих папках, независимо от того, находятся ли они в другом репозитории Git.
Это решение очень хорошо работает для библиотек поставщиков в рамках проекта приложения. И вы можете использовать менеджер пакетов / зависимостей для их обновления или просто cd
а также git pull
,