git svn show-ignore 给出错误 "command returned error: 1"

标签 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。

最佳答案

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

要处理这个问题,您需要首先指定您希望它查看哪个 Remote :

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

(请注意,我在执行克隆时指定了“来源”前缀。相应地改变您的命令。)

其次,这仍然失败,我的分支出现了非常相似的错误。它适用于主干,但不适用于分支机构。这是因为没有分支的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条目;也许我对克隆做错了什么。

关于git svn show-ignore 给出错误 "command returned error: 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254694/

相关文章:

git - 在 Git 中,您可以检索从存储库中提取某个提交的日期吗?

Git 克隆 : Redirect stderr to stdout but keep errors being written to stderr

git - 限制 git svn 到分支

git-svn密码更改

git - 停止在 git 中跟踪文件 - 无需在本地或 pull 时删除它

git - 在没有读取权限的情况下忽略 git 子模块

Git merge 分支到master

java - 在 Git 或 Mercurial 中管理多个依赖项目的最佳方式是什么?

svn - --stdlayout 在 git svn clone 中做什么?

android - Flutter:app/build 文件夹和文件是否应该包含在 git 忽略中?