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

jpm*_*c26 21 git git-svn svnignore msysgit gitignore

我正在尝试将项目从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/
Run Code Online (Sandbox Code Playgroud)

当前目录是我想成为存储库的目录.authors-transform.txt绝对是在正确的位置.该项目使用标准布局,但它不存在于存储库的根目录中.(遗憾的是,有人早就开始只是馅所有项目到同一仓库的做法.这就是为什么我指定--trunk,--branches--tags.)看来退房罚款.然后我尝试生成一个忽略文件,并得到这个令人难以置信的神秘错误:

$ git svn show-ignore
config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

所以也许我正在猜测它正在调用什么命令?但这并没有真正帮助.

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

使用msysgit 1.9.4.

jpm*_*c26 33

所以这是由git无法在文件部分找到匹配的fetch条目svn-remote引起的$GIT_DIR/config.没有参数git svn show-ignore,它不知道该部分要查找什么.(也许我的跟踪设置不正确?)

要解决此问题,您需要首先指定要查看的远程数据:

git svn show-ignore --id=origin/trunk
Run Code Online (Sandbox Code Playgroud)

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

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

git config --add svn-remote.svn.fetch path/to/branches/branchname:refs/remotes/origin/branchname
Run Code Online (Sandbox Code Playgroud)

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

git config --get-all svn-remote.svn.fetch
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您还记得这一点(我知道这是三年前),@jpmc26,您说在执行克隆时指定了“来源”究竟是什么意思?我添加了 `--id=origin/trunk` 位,但我没有在我的克隆中指定任何类似的东西...... (2认同)
  • 对于仍然想知道的人:我刚刚克隆了一个没有 `--prefix=origin` 的 SVN 存储库(标准布局),但是对于 `show-ignore`,我确实必须指定 `origin/trunk`。没有“origin/”,我得到了和以前一样的错误。 (2认同)