Svn to git миграция, сохраняющая историю скопированного файла
Я пытаюсь перенести проект svn в git, и мне не удается перенести всю историю файлов, которые были скопированы внутри моего репозитория svn.
Мне удалось воспроизвести ошибку, имеющую следующие шаги:
# create a test repository
svnadmin create test
# checkout the project and create a file
svn co svn://localhost/test
cd test
touch original.txt
svn add original.txt
svn commit -m "add original.txt"
# add an item in the file history
echo "change 1" >> original.txt
svn commit -m "change 1 in original.txt"
# create a sub folder
mkdir sub
svn add sub
svn commit -m "add sub"
# cp original to sub
svn copy svn://localhost/test/original.txt svn://localhost/test/sub/
# migrate to git
cd ..
git svn clone svn://localhost/test/sub test-sub
Теперь, если я получаю историю git original.txt, я вижу только:
> git log
author: (no author) <(no author)@1505a309-be06-4361-bd01-fbca4a25f6d8>
copy original.txt
Если я получаю историю svn sub/original.txt, я вижу:
> svn log
r4 | (pas d'auteur)
copy original.txt
r2 | (pas d'auteur)
change 1 in original.txt
r1 | (pas d'auteur)
add original.txt
Как перенести эту папку на git, сохраняя ту же историю, что и в svn?
Ответы
Ответ 1
Git действительно не отслеживает переименования файлов или копии. Он просто пытается узнать, был ли файл скопирован или переименован с помощью эвристического подхода.
Поскольку в Git нет истинного отслеживания переименования, существует вероятность потерять историю файлов после переименования или копирования. Мое предположение, что вы столкнулись с этим конкретным сценарием.