Git Submodule для подпапок - PullRequest
       32

Git Submodule для подпапок

25 голосов
/ 13 июля 2009

В SVN вы можете связать хранилище с любой папкой в ​​другом хранилище SVN. Мне интересно, есть ли подобная функция для Git? По сути, я хочу, чтобы подмодуль git находился внутри моего хранилища, но я хочу, чтобы подмодуль был указателем на подпапку другого хранилища git, а не на весь репозиторий. Возможно ли это?

Ответы [ 3 ]

20 голосов
/ 13 июля 2009

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

Эта тема в списке рассылки Git содержит некоторую справочную информацию.

В этой статье от Panther Software содержится некоторая информация от кого-то другого, пытающегося достичь аналогичной цели (то есть реплицировать svn:externals с помощью Git).

Если оба проекта находятся под вашим контролем, тогда я предлагаю вам выделить интересующую вас «подпапку» в ее отдельное репо. Тогда оба проекта могут создавать подмодули, которые ссылаются на него.

17 голосов
/ 17 августа 2012

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

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

  1. Настройте свой подмодуль в отдельном каталоге.
  2. Создайте символическую ссылку на подпапку в нужном вам месте:
    • ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory

Ссылки:

3 голосов
/ 20 августа 2009

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

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

...