我正在使用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.
非常感谢任何有关如何执行此操作的说明!
答案 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可以 承诺错误的分支。