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's 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 history of 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 нет реального отслеживания переименования, существует вероятность потери истории файлов после переименования или копирования. Я думаю, что вы столкнулись с этим конкретным сценарием.

Другие вопросы по тегам