Лучший рабочий процесс при разветвлении и переименовании проекта GitHub

Я пытаюсь найти лучший рабочий процесс для работы с форком существующего проекта с открытым исходным кодом в Github. Я хочу взять существующий проект и внести в него существенные изменения, в этом случае перенести его на Android и добавить определенные функции только для Android. Я хотел бы удовлетворить следующее:

  1. Иметь возможность переносить изменения из общедоступного репозитория в новый порт Android по мере обновления исходного кода.
  2. Иметь возможность отправлять изменения (через запросы на вытягивание) в исходный проект, когда я исправляю ошибки, которые не применимы только к порту Android.
  3. Создайте отдельную переименованную версию проекта, чтобы было понятно, что это порт для Android. Я посмотрел на переименование форка, и Github дал мне огромные предупреждения об этом.

Мои первоначальные мысли таковы: я бы разветвил исходный проект, затем разветвил бы и переименовал свой форк, чтобы получить следующие репозитории:

original-author/projectA
nicstrong/projectA
nicstrong/projectA-android

Это позволило бы мне работать над моим локальным репозиторием local/projectA-android, внося изменения в nicstrong/projectA-android. Затем, чтобы обновить исходный проект, я могу переустановить nicstrong/projectA на последнюю версию исходного автора/projectA, а затем выбрать/объединить nicstrong/projectA с локальным/projectA-android.

Мои вопросы:

  1. Я совершенно новичок во всем Git. Это кажется хорошим подходом? Или есть лучший рабочий процесс для обработки этого сценария?
  2. Как мне справиться с отправкой из projectA-android обратно в nicstrong/projectA, чтобы я мог настроить запрос на извлечение для исходного проекта?

person Nic Strong    schedule 14.04.2011    source источник


Ответы (2)


1/ Да, это кажется самым безопасным подходом, поскольку любая модификация, которую вы в конечном итоге переносите в nicstrong/projectA, будет находиться в проекте с той же структурой, что и original-author/projectA.
Это означает, что запросы на вытягивание будет легче организовать, так как вы будете в проекте, отражающем оригинальный авторский проект.

2/ Если в ветке nicstrong/projectA-android проводится масштабный рефакторинг, я бы сделал ветку backport, тщательно объединил или отобрал то, что вам нужно, из многочисленных изменений в ветке backport, а затем отправил эту ветку в ветку nicstrong/projectA.
(что означает, что вы добавили nicstrong/projectA в качестве удаленного nicstrong/projectA-android)

person VonC    schedule 14.04.2011
comment
Чтобы создать несколько необходимых вилок, я использовал технику, описанную в этом посте: adrianshort.org/2011/11/08/ - person dbasch; 19.08.2013
comment
@dbasch верно, но это не будет настоящим форком, поскольку не будет никакого запроса на извлечение из второго форка обратно в исходное репо. - person VonC; 19.08.2013
comment
Я буду использовать репозиторий проекта A для запросов на включение исходного репо. Изменения в проекте A-android/backport будут вручную объединены с проектом A. Это хорошая стратегия? - person dbasch; 19.08.2013
comment
Пожалуйста, сообщите моей девушке, что я сделал что-то правильно, хоть раз. Ваш ответ, данный в этом сообщении, также был очень полезен для понимания этой темы: stackoverflow.com/a/15734936/168205 - person dbasch; 19.08.2013
comment
Примечание. Добавьте проект A в качестве удаленного для локального репозитория projectA-android. Назовите удаленный восходящий поток. - person dbasch; 19.08.2013
comment
@dbasch по той же теме, также полезен stackoverflow.com/a/3903835/6309. - person VonC; 19.08.2013
comment
.@VonC Это помогло объяснить параметры выборки/объединения/перебазирования для синхронизации проекта A с проектом A-android. - person dbasch; 20.08.2013

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

person Jordan Scales    schedule 03.09.2012