#git #svn #git-svn
#git #svn #git-svn
Вопрос:
В течение многих лет моя команда использовала SVN. Несколько месяцев назад мы перешли на Git, выполнив простое нажатие на ветку SVN, без истории и продолжили разработку на Git. Сегодня нам нужно восстановить историю SVN, пока она не была потеряна. Итак, я использовал git svn clone, чтобы превратить SVN в Git.
Таким образом, я получаю проект SVN, эквивалентный проекту Git (proj_with_history) и проекту Git, имеющему ту же начальную фиксацию, что и последняя фиксация одной из ветвей (proj_without_history) proj_with_history.
Вопрос в том, как вы связываете / объединяете proj_with_history с proj_without_history, зная, что в proj_without_history были созданы новые ветви и теги?
Если возможно, мы хотели бы сделать эту миграцию прозрачной в графике коммитов, даже если история переписывается, если избежать конфликтов.
- proj_with_history: … — f30ab — 98ca9
- proj_without_history : 34ac2 — h20a5 — …
- 98ca9 и 34ac2 имеют одинаковый код
Комментарии:
1. Что такое «proj_without_history»?
2. Ветка, которую они запустили без истории svn. Просто один коммит с последним содержимым из ветки svn, а затем начал работать над git.
Ответ №1:
Извлеките клон svn в репозиторий с вашей историей git, привейте корень этой истории git к преобразованному коммиту svn, из которого было получено его содержимое ( git replace --graft $theroot $theoriginaltip
), проверяйте результат локально, затем запекайте в графте с git filter-branch
помощью, версия «просто сделай это» методом перебора — git filter-branch -- --all --tag-name-filter cat
полностью отказаться от старогоистория и заменить ее новыми подсказками с расширенной историей.
Комментарии:
1. Теперь мне нужно кое-что узнать. Отличный совет!