Git Подмодуль к подпапке

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

Ответ 1

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

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

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

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

Ответ 2

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

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

  1. Настройте ваш подмодуль в отдельном каталоге.
    • git submodule add http://example.com/repo.git./submodules/repo
  2. Создайте символическую ссылку в подпапку в том месте, где вы хотите:
    • ln -s./submodules/repo/subdirectory./wherever/symlinked_directory

Рекомендации:

Ответ 3

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

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