Подтвердить что ты не робот

Git/GitHub: fork, сложение поддерева или подмодуль для внешнего кода?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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