Вопрос

Я новичок в Git: я пришел из SVN и нашел действительно мощную функцию: external. Здесь, в Git, я не нашел ничего подобного:

  • подмодули идеально подходят для добавления модулей проекта, которые не всегда требуются. Они должны быть инициализированы после клонирования репозитория, и вы не можете включать только подкаталог исходного проекта.
  • поддеревья действительно хороши для добавления библиотек (они также позволяют включать подкаталоги), но продвигать их - настоящая боль.

Итак, сценарий таков: у меня есть проект, в который я хочу включить несколько библиотек. Я хочу иметь возможность изменять все эти библиотеки и помещать их в их собственные репозитории. Более того, некоторые из этих библиотек являются подкаталогами более крупных проектов (например, если проект включает также демонстрационные версии или файлы readme, я не буду включать эти каталоги в свой проект).

Как я могу это сделать?

Я пробовал:

Что ж, если вы дошли до этого момента, спасибо за терпение, теперь я бы хотел попробовать что-нибудь еще, потому что прямо сейчас мой вывод: «В Git нельзя выталкивать поддеревья» ç_ç

Это было полезно?

Решение

Пара замечаний из комментариев:

Поэтому я рекомендую:

  • загрузка (git checkout) родительского репо и всех его подмодулей
  • создание в другом месте правильной структуры с символической ссылкой на подмодули (или подкаталоги подмодулей для достижения того, что вам нужно.
  • периодически возвращаться к родительскому репо git ain, чтобы обнаружить любые изменения (выполненные из другой структуры каталогов, созданной вне Git), чтобы зафиксировать и протолкнуть все модификации подмодулей, а затем зафиксировать и продвинуть родительское репо.

git checkout

общий

И ваша собственная структура каталогов проекта (например)

общий

(обратите внимание, что нет никакого генерирующего кода кода (например), потому что в вашем реальном проекте он вам не нужен)

Другие советы

Решение VonC простое, но у него есть недостаток: Нет хорошего способа зафиксировать конфигурацию вашего проекта + библиотек в определенный момент времени.

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

Итак, если вы последуете предложению VonC, возможно, создайте теги в каждом из репозиториев в тот момент, когда вы выпускаете свой проект, чтобы вы могли, по крайней мере, проверить их снова в том же месте.

В противном случае всегда двигайтесь вперед и никогда не проверяйте старую версию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top