Получение точек слияния в SVN для конвертации SVN в GIT - PullRequest
0 голосов
/ 17 июня 2019

В настоящее время я работаю над преобразованием репозиториев SVN в git с использованием svn2git. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что однажды преобразованные точки, в которых мы слились в SVN, не отображаются в Git. Вместо этого мы получаем отдельные ветви и теги без каких-либо связей друг с другом, за исключением редких случаев.

Чтобы обойти это, я переписывал историю вручную, используя git replace и git filter-branch. Это очень медленный процесс, который в некоторых случаях может занять часы, если не дни. Поскольку я должен просмотреть историю в git и svn, чтобы найти правильные местоположения. Затем выполните замены коммитов, чтобы добавить родителей или исправить родителей в случае неудачного слияния. Я уже автоматизировал некоторые аспекты этого процесса, используя простые сценарии, которые исправляют такие вещи, как авторы, электронные письма и даты. Однако слияния в настоящее время в основном выполняются вручную.

Я бы хотел найти способ полностью автоматизировать процесс. У меня есть идея, как управлять этим с помощью git replace, используя список ожидаемых мест слияния. Затем перебирая их, чтобы повторно соединить их, используя git replace, сопоставляя идентификаторы ревизий, сохраненные в сообщении фиксации, и / или используя git filter-branch для передачи истории. Проблема в том, что мое понимание SVN недостаточно сильное, чтобы понять, как экспортировать список точек слияния.

Хотя, честно говоря, это не должно быть точным решением, поскольку цель состоит в том, чтобы сохранить историю слияний для создания правильного графа в git. Так что, если есть способ запустить svn2git для генерации слияний, это тоже было бы хорошо. Также я пробовал sub-git и svn-git с одинаковыми результатами. Sub-git лучше справляется с обработкой тегов, но оба не сохраняют слияния.

...