В течение многих лет моя команда использует 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 были созданы новые ветки и теги?
Если возможно, мы хотели бы сделать эту миграцию прозрачной в графе коммитов, даже если история будет переписана, но при этом избежать конфликтов.
Ветка, которую они начали без истории svn. Всего один коммит с последним содержимым из ветки svn, а затем начал работать над git.
Загрузите клон svn в репозиторий с вашей историей git, привяжите корень этой истории git к преобразованному коммиту svn, из которого было получено его содержимое (git replace --graft $theroot $theoriginaltip
), проверьте результат локально, затем запеките прививку с помощью git filter-branch
, грубой силы версия just-do-it — это git filter-branch -- --all --tag-name-filter cat
полностью отказаться от старой истории и заменить ее новыми подсказками с расширенной историей.
Теперь мне нужно узнать об этом. Отличный совет!
Что такое "proj_без_истории"?