36

编辑:解决方法。 现在我们明白了这个问题,这里是解决方案:做

git svn fetch -r REVISION:HEAD

其中 REVISION 是分支创建的 svn 提交的编号。


一段时间以来,我一直很高兴使用 git svn 来处理我的项目的主干,但现在我还需要跟踪分支。

我试图初始化一个新的存储库来做到这一点

git init
git svn init https://svnserver/svn/repository

然后我编辑本地配置文件以反映我的 svn 存储库的结构:

[svn-remote "svn"]
    url = https://svnserver/svn/repository
    fetch = path/to/trunk:refs/remotes/trunk
    branches = path/to/branches/*:refs/remotes/branches/*

然后我跑

git svn fetch

而这个命令什么也不做:

  • 它不会终止
  • 它不会在控制台输出中写入任何内容
  • 它不使用任何 CPU,也不创建文件

10分钟后我放弃了

我检查了 svn 存储库是否正常工作,因为git svn fetch在我只跟踪主干的 git 存储库上完美运行。

这是一个错误还是我在这里遗漏了什么?

4

5 回答 5

32

在获取第一个相关提交后,它变得冗长。

.git\svn\.metadata但在它获取该提交之前,您可以通过检查文件来确保命令正常工作。这些线路将在运行时不断更新branches-maxRev = 123tags-maxRev = 123增加它们的数量。

于 2012-06-04T12:32:11.033 回答
14

尝试添加--log-window-size=5000参数。

如果 repo 有大量提交,git-svn100默认会一次通过它们。提高它可以极大地提高它的速度。

于 2017-04-01T23:18:01.863 回答
12

如果使用 Windows 版 Git,请确保从 2.20.1 升级到上一个 (2.20.0)、下一个 (2.21.0) 或任何其他版本。提到的版本有一个错误使“git svn fetch”挂起,后来被修复。

于 2019-02-27T17:00:20.293 回答
2

对于那些对上述解决方案不满意的人:

问题: svn+ssh://svn.xxxxxxx.com/svnroot/strategy/products/mysoftware 挂起:

在 [MyLocalRepositoryPath] 中初始化空的 Git 存储库

解决方案:插入

用户名@

在svn url前面

svn+ssh://username@svn.xxxxxxx.com/svnroot/strategy/products/mysoftware

于 2018-04-11T09:37:50.550 回答
0

我已将 fetch 属性更改为 :refs/remotes/git-svn 它对我有用

于 2017-12-22T15:11:27.967 回答