SVN: эквивалент externals в Git?

У меня есть два SVN-проекта из другого репозитория SVN, использующего svn: externals.

Как я могу иметь такую же структуру макета хранилища в Git?

Ответ 1

Git имеет два подхода, аналогичные, но не точно эквивалентные svn: externals:

  • Subtree merges вставляет внешний код проекта в отдельный подкаталог вашего репо. У этого есть подробный процесс настройки, а затем он очень прост для других пользователей, поскольку он автоматически включается, когда репозиторий проверен или клонирован. Это может быть удобным способом включения зависимости в ваш проект.
    Легко вытащить изменения из другого проекта, но сложно представить изменения обратно. И если другой проект должен слиться с вашим кодом, истории проектов объединяются, и оба проекта эффективно становятся одним из них.

  • Git подмодули (manual) ссылаются на конкретную фиксацию в другом репозитории проекта, как и svn: externals с аргументом -r. Субмодули просты в настройке, но все пользователи должны управлять подмодулями, которые не включаются автоматически в кассы (или клоны).
    Несмотря на то, что легко вернуть изменения в другой проект, это может вызвать проблемы, если репо изменилось. Поэтому, как правило, нецелесообразно передавать изменения обратно в проект, который находится в активной разработке.

Ответ 2

Как я упоминал в "Git обновлении новой версии подмодуля", вы можете достичь того же SVN внешняя функция с подмодулями Git 1.8.2:

  Git config -f.gitmodules subodule. <path>.branch <branch>
Код>

Этого достаточно, чтобы подмодуль следовал ветке (как в LATEST-фиксации удаленной ветки субмодуля upstream repo). Все, что вам нужно сделать, это:

  Git Обновление подмодуля --remote
Код>

Это обновит подмодуль.

Подробнее см. Git подмодуль отслеживание последних ".

Чтобы преобразовать существующий подмодуль в одно отслеживание ветки: см. все шаги в разделе Git подмодули: укажите ветку/тег ".

Ответ 3

Вы должны изучить Git подмодули. Это должно позволить почти точно, что вы ищете.

Ответ 5

Для последней версии Git я бы предложил прочитать Git subodules в официальной документации Git.