git svn show-ignore会给出错误"命令返回错误:1"

时间:2014-08-12 01:04:15

标签: git git-svn gitignore msysgit svnignore

我试图将项目从SVN迁移到git。这是我使用的命令:

$ git svn clone http://oursvnserver/ --no-metadata -A ../authors-transform.txt --trunk=path/to/trunk --branches=path/to/branches --tags=path/to/tags . --username=mysvnusername --prefix=origin/

当前目录是我想成为存储库的目录。 authors-transform.txt绝对是在正确的位置。该项目使用标准布局,但它不存在于存储库的根目录中。 (不幸的是,很久以前有人开始将所有项目填充到同一个存储库中。这就是我指定--trunk--branches--tags的原因。)退房罚款。然后我尝试生成一个忽略文件并得到这个令人难以置信的神秘错误:

$ git svn show-ignore
config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1

在此过程中似乎正在运行其他命令,所以我做了一些猜测:

$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn || echo $?
1
$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn$ || echo $?
1

所以也许我正在猜测它的命令是什么?但这并没有真正帮助。

这个错误究竟意味着什么?我可以尝试解决这个问题?

使用msysgit 1.9.4。

1 个答案:

答案 0 :(得分:29)

因此,这是由git无法在fetch文件的svn-remote部分中找到匹配的$GIT_DIR/config条目引起的。如果没有git svn show-ignore的参数,它就不知道该部分要查找的内容。 (也许我的跟踪设置不正确?)

要解决此问题,您需要先指定要查看的遥控器:

git svn show-ignore --id=origin/trunk

(注意我在执行克隆时指定了" origin"前缀。相应地改变你的命令。)

其次,这仍然失败,我的分支出现了非常类似的错误。它适用于行李箱,但不适用于树枝。这是因为分支的没有 fetch条目。要添加它们,请使用此命令(对前缀进行调整):

git config --add svn-remote.svn.fetch path/to/branches/branchname:refs/remotes/origin/branchname

要查看所有fetch条目并确保其有效:

git config --get-all svn-remote.svn.fetch

我不确定为什么在开头只设置了一个trunk的条目;也许我对克隆做错了。