2016-04-10 5 views
1

Предположим, у меня есть репозиторий с именем Shared Features на удаленном и локальном.Локальный репозиторий как подмодуль

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

Поэтому я хочу использовать это локальное репо как прокси-сервер между субмодулем и удаленным репо. Это возможно?

Заранее спасибо.

Примечание: Я был бы очень признателен, если вы скажете мне, как это сделать в SourceTree.


Edit: Я думаю, что мне не хватает терминологии, чтобы сделать мой вопрос ясно, так что здесь я рисую то, что я имею в виду: enter image description here

ответ

1

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

В ссылке выше первого описанного протокола является Local protocol, который позволит вам clone с помощью path или file://

Local Protocol

Самым основным является местный протокол, в котором удаленный репозиторий находится в другом каталоге на диске.

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

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

Если у вас есть общий файсистему, то вы можете clone, push к и pull из local file-based repository.

Чтобы clone хранилище, как это или добавить один в качестве пульта дистанционного управления для существующего проекта, используйте path в хранилище как URL.

Например, чтобы клонировать локальный репозиторий, вы можете запустить что-то вроде этого:

git clone /opt/git/project.git 

Или вы можете сделать это:

git clone file:///opt/git/project.git 

Git работает немного по-другому, если явно указать file:// в начале URL-адреса.

Если вы просто указали путь, Git пытается использовать жесткие ссылки или напрямую копировать нужные ему файлы.

Если вы укажете file://, Git запускает процессы, которые обычно используются для передачи данных по сети, что, как правило, намного менее эффективный способ передачи данных.

Основная причина указания префикса file:// - это если вы хотите, чтобы чистая копия репозитория с внешними ссылками или объектами не использовалась - как правило, после импорта из другой системы контроля версий или чего-то подобного (см. Внутренние разделы Git для задач обслуживания). Мы будем использовать обычный путь здесь, потому что это почти всегда быстрее.

To add a local repository to an existing Git project, you can run something like this:

git remote add local_proj /opt/git/project.git 

Затем, вы можете нажать на и вытащить из этого пульта дистанционного управления, как если бы вы делали это по сети.