如何在现有的git存储库中获取新数据并提交给svn?

时间:2011-04-19 05:41:46

标签: svn git git-svn

我正在使用git-svn从git获取svn repo中的数据。我成功地使用一些工作从git导入数据到带有子模块的svn(我将子模块转换为git的子树),并且工作正常。

但现在我陷入了困境。如果我想得到一个git pull git的现有repos的更新数据,它会在我的本地分支上提供所有更新的数据,但我无法使用git svn dcommit命令向svn提交它,它给出了如下错误消息:< / p>

Unable to determine upstream SVN information from HEAD history 
Perhaps the repository is empty. at /usr/libexec/git-core/git-svn line 521. 

非常感谢任何有关如何执行此操作的说明!

1 个答案:

答案 0 :(得分:0)

我可能会弄错,但我的理解是git-svn不能与上游git repo共享,只能是subversion版本。

我完全没收我的git试图做你想做的事情,从远程git repo拉出来然后推送到颠覆者。

我现在所做的是使用git来执行我的SCC,然后将文件复制到仅受控制的本地树中,然后将其复制到subversion中。

我编写了一个ruby脚本,它在本地git工作树和本地subversion之间进行同步。它只复制更改的文件,只复制我关心的文件。然后我从subversion工作树中做一个正常的svn ci

好的,我在这里找到了我理解的来源...... http://git-scm.com/docs/git-svn在CAVEATS标题下......

  

为了简单起见而且   与能力较弱的人进行互操作   系统(SVN),建议   所有git svn用户克隆,获取和   直接从SVN服务器转发,   并避免所有的git   克隆/拉/合并/推送操作   git存储库和分支之间。   推荐的交换方法   git分支和用户之间的代码是   git format-patch和git am,或者只是   'dcommit'ing到SVN存储库。

     

运行git merge或git pull不是   在您计划的分支机构上推荐   来自。 Subversion没有   代表任何合理的合并或   有用的时尚;所以用户使用   Subversion无法看到任何合并   你做了。此外,如果你合并   或从一个git分支拉出来   SVN分支的镜像,dcommit可以   承诺错误的分支。