Могу ли я иметь один репозиторий Git, который охватывает несколько изолированных каталогов? - PullRequest
4 голосов
/ 25 марта 2012

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

Например, у меня есть что-то вроде

  • A
    • а
    • B

и в других местах

  • 1
    • я
    • II

и хотел бы объединить их в одном репозитории git:

  • репо
    • A ..
    • 1 ..

Могу ли я сделать это с помощью git?

Ответы [ 3 ]

5 голосов
/ 25 марта 2012

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

0 голосов
/ 26 марта 2012

Если у 'A' и '1' уже есть свои собственные репозитории git, и если вы хотите продолжать использовать эти репозитории, тогда ваш единственный выбор - создать репозиторий git в «repo», а затем добавить «A» и «1»в виде подмодулей git.

Если вам не нужны существующие git-репозитории в 'A' и '1', просто создайте новый git-репозиторий в 'repo' и добавьте все содержимое 'A' и '1' .

0 голосов
/ 25 марта 2012

Если подумать, большинство исходных дистрибутивов структурированы следующим образом.То есть макет репо не отражает макет развертывания.Есть исходный код в src, который в итоге компилируется, может быть, в build, и эти артефакты в свою очередь устанавливаются где-то вроде /usr/bin.Вероятно, есть руководство, которое собирается другим набором инструментов и устанавливается в другом месте целевой системы.Может существовать веб-сайт, который развертывается совершенно другими средствами в другой целевой системе и т. Д. Для управления всем этим существует набор сценариев сборки и развертывания, некоторые из которых (глупо) не всегда отслеживаютсяс остальной частью системы.

Тем не менее, ничто из этого не очень помогает, кроме как ментальная модель, если вы не можете найти инструменты развертывания для вашего конкретного сценария.

Если вам нужно собратьваш собственный сценарий развертывания, вы можете начать с чего-то довольно простого.С предоставленным вами ограниченным фоном может показаться, что вам не нужно больше, чем

while read repo path; do
    cd "$path"
    mkdir "$repo"
    cd "$repo"
    git init
    git pull /path/to/repo/"$repo"
done<<____HERE
    A /var/www
    1 /srv
____HERE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...