Как сделать форк с открытым исходным кодом, полученный из закрытого проекта? - PullRequest
0 голосов
/ 29 мая 2019

Я делаю часть (но не все) проекта с закрытым исходным кодом, чтобы сделать его открытым. Пока что я создал ветку ('open'), из которой я удалил функции, которые мы не собираемся открыть с открытым исходным кодом.

Теперь я могу экспортировать ветку 'open' и зарегистрировать ее в свежем пустом репо, которое становится выпуском с открытым исходным кодом.

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

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

1 Ответ

1 голос
/ 29 мая 2019

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

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

Примерно так в ужасно истолкованном примере:

git clone git://blablabla.git mydoublerepo
cd mydoublerepo
git remote add other git://other.git
git fetch other
git checkout -b other_master -t other/master
git cherry-pick origin/master # cherry-picks the top commit off of the other remote's master branch

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

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