Как мне воспроизвести коммиты в svn для git

Мне нужно воссоздать некоторые коммиты из одного репозитория git в другой, которые, казалось бы, не связаны. Ситуация следующая:

Репозиторий 1 — это репозиторий git-svn, содержащий коммиты, которые я хочу воспроизвести в другом. По содержанию это набор исправлений, созданных в ветке поддержки с тех пор, как мы пометили выпуск.

Репозиторий 2 — это обычный репозиторий git, который был создан из нашего старого репозитория svn (такой же, как репозиторий 1), и он также содержит тегированный выпуск в виде тега git.

В конечном счете, я хочу воссоздать ветку patch из старого svn в новый репозиторий git с доступом к отдельным коммитам. Что мне нужно сделать, так это создать ветку из тега (просто), а затем воспроизвести все коммиты, которые в настоящее время находятся в мире svn/git-svn, в эту ветку patch.

Пока что я создал тег в текущем репозитории git из исходного тега, кроме того, у меня есть репозиторий git-svn рядом с ним, и я добавил репозиторий git-svn в качестве удаленного. Затем я создал еще одну ветку, которая оформляется с этого пульта. (Я получил эту идею от Самый простой способ воспроизвести коммиты в новом репозитории git

По своей наивности я думал, что смогу объединить две ветки, но, похоже, это не работает. Во-первых, git merge не хочет объединять несвязанные истории, и если я скажу ему игнорировать это, произойдет то, что все файлы в целом будут более или менее скопированы со всем, что помечено как конфликт.

Итак, в конечном итоге вопрос в том, могу ли я перенести эти коммиты? Поскольку речь идет о 100+ коммитах, я не хочу делать это вручную.


162
1

Ответ:

Решено

Решение на самом деле полностью описано в Самый простой способ воспроизвести коммиты в новом репозитории git

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

Также спасибо @efshift0 за подсказку в том же направлении.