git svn clone忽略文件

问题描述 投票:0回答:1

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

迁移脚本的开头如下所示:

#!/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的结构(trunkbranches),因此这不是我正在寻找的。

另一个尝试......

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

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

作品。这至少非常奇怪。

git svn git-svn
1个回答
0
投票

我不知道究竟是什么导致了这个问题,但它与我的git版本有关。我在Ubuntu上使用了git 1.9并且它失败了,但是对于OS X版本的git(1.8)上的相同命令它有效。如果您遇到此类问题,请尝试使用其他版本的git。

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

#!/bin/sh

# $1 - remote svn repo (https://svn/path/to/repository)
# $2 - local git repo name (MyProject)
# $3 - remote git repo address (user@gitserver:/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

我希望有人会觉得有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.