svn to git migration保留复制文件的历史记录

时间:2015-12-14 21:27:45

标签: git svn

我正在尝试将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

现在,如果我获得original.txt的git历史记录,我只看到:

> git log
author: (no author) <(no author)@1505a309-be06-4361-bd01-fbca4a25f6d8>
copy original.txt

然而,如果我得到sub / original.txt的svn历史,我会看到:

> 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 个答案:

答案 0 :(得分:0)

Git并不真正跟踪文件重命名或副本。它只是尝试来识别文件是使用heuristic-based approach复制还是重命名。

由于Git中没有真正的重命名跟踪,因此有一个chance of losing file history after renaming or copying it。我猜你遇到了this particular scenario