Git / GitHub: вилка, объединение поддеревьев или субмодуль для внешнего кода? - PullRequest
22 голосов
/ 24 октября 2010

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

  1. Форк исходного проекта, переместите оригинальное содержимое в подкаталог и поместите его в мое репозиторий GitHub.
  2. Инициируйте новое репо, выполните слияние поддерева с существующим репо и отправьте его в мой репозиторий GitHub.
  3. Клонируйте существующее репо, сделайте новое основное репо, поместите клонированное репо в основное как подмодуль , нажмите.

Вариант (1) может быть предпочтительным на GitHub, поскольку они, вероятно, могут делиться источниками. Но по логике вещей мой проект не является вилкой существующего. Скорее существующий является просто модулем. Также я не уверен, что перемещение существующего кода в подкаталог может не вызвать проблем. Вероятно, я бы предпочел вариант (2), так как существует только один репо. (3) потребовалось бы работать с несколькими репозиториями, но по логике ближе всего к моей ситуации.

Я немного исследовал это, но я не совсем уверен. Что бы вы порекомендовали в этой ситуации? Заранее спасибо!

1 Ответ

7 голосов
/ 25 октября 2010

Если жизненный цикл разработки двух проектов (одного на GitHub и вашего) отличается, тогда подход с субмодулем лучше.
Т.е.: если вы изменяете свой проект без необходимости систематически менять другой проект GitHub, то вам следует рассмотреть подмодульный подход.

Однако для реализации этого вам понадобится комбинация (1) и (3):

  • если вы не можете внести (подтолкнуть) непосредственно в проект GitHub, вам нужно его разветвить (1).
  • тогда вам нужно сослаться на этот разветвленный проект как подмодуль в вашем проекте (3).

Это позволит вам ссылаться на одну конкретную ревизию проекта GitHub, в то же время позволяя вам обновить этот подмодуль и сделать для него определенный толчок (как описано в « истинной природе подмодулей »). * Но как только вы обновите подмодуль, не забудьте зафиксировать ваш проект (который является «родительским проектом» для подмодуля), чтобы зарегистрировать новую версию подмодуля, на который вы сейчас ссылаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...