我正在尝试git-svn,我收到以下错误。到目前为止我所做的是
git svn init -T <my svn repo>
然后我一直用
提交到我的存储库 git commit -a
然后,一旦我做了一些我做了一些
git svn fetch
然后我尝试了
git svn dcommit
但是,
失败了无法从HEAD历史记录中确定上游SVN信息。 可能存储库是空的
我还可以看到我的文件系统中的文件没有标记为由svn使用(不确定是否应该发生)。如果我浏览svn存储库(使用repo浏览器),我可以看到原始文件存在。
在原始失败后,我尝试重新定位但没有太大成功(它会引发其他一些错误)。
答案 0 :(得分:3)
我发现,当SVN repo为空时,git-svn抛出
无法从HEAD历史记录中确定上游SVN信息
因此,使用SVN我在文本文件中检查了第一次提交
svn add test.txt; svn commit -m "test file"
然后我能够做一个git svn克隆并修复了所有内容。
答案 1 :(得分:1)
git svn
命令类似于处理普通远程(svn远程名为git-svn
)。 fetch
只是从远程下载提交,它不会以任何方式将它们连接到您的树。如果你在启动后立即获取它会工作,因为你还没有树,但是你先提交了。您想使用git svn rebase
,它会将您的树重新绑定到svn头上。通常情况下,您git svn fetch
之后git svn init
,或仅使用git svn clone
,这两者都是。设置初始存储库后,您可以一直使用git svn rebase
,在一次操作中获取和重新定位
答案 2 :(得分:1)
此网站为我解决了这个问题:http://eikke.com/importing-a-git-tree-into-a-subversion-repository/。直接引用:
问题是SVN元数据已丢失。要解决这个问题,我们可以 使用Git移植物链接它们。我们将告诉Git创建的提交 我们要在其中存储项目的SVN文件夹是父文件夹 在我们的Git存储库中提交第一个提交:
$ git show-ref trunk
> 741ab63aea786882eafd38dc74369e651f554c9c refs/remotes/trunk
$ $ git log --pretty=oneline master | tail -n1
> 88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 Initial version
$ echo "88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 741ab63aea786882eafd38dc74369e651f554c9c" >> .git/info/grafts`
答案 3 :(得分:0)
猜测一下,尝试 git svn clone ,然后更改/提交文件,然后 git svn dcommit 。这是我通常这样做的方式,它起作用(在我的情况下)。