git-svn dcommit错误:无法确定上游SVN信息

时间:2010-06-22 17:37:08

标签: git-svn

我正在尝试git-svn,我收到以下错误。到目前为止我所做的是

 git svn init -T <my svn repo> 

然后我一直用

提交到我的存储库
 git commit -a
然后,一旦我做了一些我做了一些

 git svn fetch

然后我尝试了

 git svn dcommit

但是,

失败了
  

无法从HEAD历史记录中确定上游SVN信息。   可能存储库是空的

我还可以看到我的文件系统中的文件没有标记为由svn使用(不确定是否应该发生)。如果我浏览svn存储库(使用repo浏览器),我可以看到原始文件存在。

在原始失败后,我尝试重新定位但没有太大成功(它会引发其他一些错误)。

4 个答案:

答案 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 。这是我通常这样做的方式,它起作用(在我的情况下)。