39

我正在尝试将git svnSVN 存储库的单个目录克隆到 Git 存储库中。

如果我使用git svn clone svn+ssh://path/to/repo/trunk/directory,我会得到一个没有分支的 Git 存储库,该分支镜像源 SVN 存储库中的分支。

如果我使用git svn --stdlayout svn+ssh://path/to/repo/trunk/directory,我会得到一个空的 Git 存储库。以下是命令的输出:

Initialized empty Git repository in /directory/.git/
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/directory'
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories

我已经读过解决上述问题的方法是添加一个修订范围,例如-r 1000:HEAD,这仍然会产生一个空的回购。输出是:

Initialized empty Git repository in /directory/.git/
Using higher level of URL: svn+ssh://path/to/repo/trunk/directory => svn+ssh://path/to/repo

关于如何使用 git-svn 克隆 SVN 存储库的子目录的任何想法,它仍然从源 SVN 存储库中获取所有分支和标签?

4

2 回答 2

64

你不想要标准布局,你想要这样的东西:

git svn clone svn+ssh://path/to/repo/ --trunk=trunk/directory --branches=branches/*/directory --tags=tags/*/directory
于 2014-01-07T23:47:52.050 回答
34

准备并进入本地项目目录:

mkdir local/project/path
cd local/project/path

使用 svn remote 初始化本地 git 存储库并获取数据:

git svn init http://my_svn_server.com/repository/project/location
git svn fetch

归功于 Gabriel Saldaña:http: //blog.gabrielsaldana.org/using-git-with-subversion-repository-subdirectory/

于 2015-04-15T15:47:15.013 回答