2014-10-01 148 views
0

我想使用Atlassian教程(https://www.atlassian.com/git/tutorials/migrating-overview)将我的svn存储库迁移到git存储库,并且我无法正确检出我的svn存储库。克隆后,使用git log时,它具有所有历史记录,但我没有看到任何文件。我尝试使用git checkout -b trunk remotes/trunk签出其中一个远程分支,但在新创建的分支中继上仍然没有文件。git svn克隆忽略文件

迁移脚本开始看起来像这样:

#!/bin/sh 
#$1 - remote svn repo 
#$2 - local git repo name 
java -jar svn-migration-scripts.jar authors $1 > authors.txt 
git svn clone --stdlayout --authors-file=authors.txt $1 $2 

我已经想通了

我可以用git svn的命令没有得到历史文件的保持:

git svn clone -rHEAD $1 $2 

使用此命令签出的文件将具有类似svn的结构(trunk,branches),所以t帽子不是我要找的东西。

另一种尝试...

我使用svn2git从GitHub试过了,但它的使用相同的机制,所以它也失败...命令:

svn2git https://svn/xxx --trunk trunk/src --branches branches --notags --authors ../authors.txt 

输出:

Checked out HEAD: 
https://svn/xxxx r149793 

还没有文件,只有.git文件夹。我试着取,拉等

另一个有趣的观察

我发现一个奇怪的仓库。有文件夹结构是这样的:

* branches 
    * as usual... 
* tags 
    * as usual... 
* trunk 
    * src 
    * src 
    * pom.xml 

输出如下:

svn2git https://svn/xxx --trunk trunk 
svn2git https://svn/xxx --trunk trunk/ 

不工作...

svn2git https://svn/xxx --trunk trunk/src 

作品。这至少很奇怪。

+0

奇怪的是,从来没有这样的问题。远程回购的* trunk *用于?它是否应该包含任何文件?你可以改变分支('git checkout -b'从当前分支创建一个新的分支)。 – rlegendi 2014-10-01 11:49:13

+0

使用中继线,它具有20MB的文件。我可以更改分支,但每个分支都是空的(尽管它的记录是正确的)。问题可能是由svn上的路径引起的吗?我试过检查出其他路径的其他项目,它工作... – 2014-10-01 13:04:16

回答

0

我不知道究竟是什么导致了问题,但它与我的git版本有关。我在Ubuntu上使用过git 1.9,但它失败了,但是在OS X版本的git(1.8)上使用了相同的命令。如果你偶然发现这种问题,请尝试使用其他版本的git。

我使用迁移脚本(svn-migration-scripts.jar是罐子Atlassian的教程下载)

#!/bin/sh 

# $1 - remote svn repo (https://svn/path/to/repository) 
# $2 - local git repo name (MyProject) 
# $3 - remote git repo address ([email protected]:/path/to/repository) 

java -jar svn-migration-scripts.jar authors $1 > authorsTmp.txt 
sed "s/mycompany\.com/youractualcompany.com/g" authorsTmp.txt > authors.txt 
git svn clone -s --authors-file authors.txt $1 $2 
cd $2 
java -Dfile.encoding=utf-8 -jar ../svn-migration-scripts.jar clean-git --force 
git remote add origin $3 
git push -u origin --all 

我希望有人会发现它有用。