我如何继续从一个最初不指向svn的git克隆中提取subversion

我如何继续从一个最初不指向svn的git克隆中提取subversion,git,git-svn,Git,Git Svn,假设我已经在machine1上创建了一个git repo,方法是用git svn clone--trunk指向svn=http://foo/project 我还不断从machine1上的svn中引入新的修订版,并使用“git svn rebase” 当我将git回购从machine1克隆到machine2时 如何在machine2上将我的git repo转寄给svn 到目前为止,我已经做到了: 假设我已经用git svn init--trunk重新发布到svn=http://foo/projec

假设我已经在machine1上创建了一个git repo,方法是用
git svn clone--trunk指向svn=http://foo/project

我还不断从machine1上的svn中引入新的修订版,并使用“git svn rebase”
当我将git回购从machine1克隆到machine2时
如何在machine2上将我的git repo转寄给svn

到目前为止,我已经做到了:
假设我已经用
git svn init--trunk重新发布到svn=http://foo/project
在机器上2
当我做“git svn rebase” 然后什么也没发生,提示符就挂起了

当我做“git svn fetch” 然后git想重新导入所有svn修订版,就好像它是全新的一样,这需要我2个小时,但在那之后,
git svn rebase
工作正常

当我执行'git svn fetch-r XXX'时,其中XXX是上次提交中可见的最后一个svn修订id,然后我从svn获取一些文件,但在此之后,
git svn rebase
只是挂起,什么也没有发生

我正在寻找一个过程来重新指向subversion主干,以不断引入新的更改。我根本不打算向SVN承诺

有什么想法吗

我的环境设置:
git svn版本1.7.9.5(svn 1.6.17)
git版本1.7.9.5
在linux mint 13上,在machine2上
git svn init--trunk=http://foo/project
准备好从Subversion获取吗?
还没有。我们需要git提交和svn修订之间关系的元数据。 查找具有svn修订版的上次提交SHA1
git show
git log-1

并将SHA1写入
.git/refs/remotes/trunk

echo>.git/refs/remotes/trunk

现在您可以
git svn fetch
(git将在第一次尝试时重建rev映射(可能需要5分钟))


上述内容在git repo用于从svn获取最新更新的分支上对我有用。

您可以设置本地存储库,使svn和远程存储库知道它们指向相同的提交

(在机器2上)运行时

svn不知道它指向的存储库与您从machine1中提取的存储库相同

要让git svn知道这种情况,可以使用前缀:

git svn init --prefix=origin/ --trunk=http://foo/project
(如果要使用分支,尾随斜杠很重要)

如果已经运行了第一个init命令,则可以通过将.git/config文件编辑为如下所示来获得相同的结果:

[svn-remote "svn"]
    fetch = http://foo/project:refs/remotes/origin/trunk
注意主干前面的原点/。如果不想手动编辑文件,可以运行:

git config --replace svn-remote.svn.fetch http://foo/project:refs/remotes/origin/trunk
这将为您插入行


完成此操作后,您应该能够运行
git svn fetch
,git将更新您的版本映射。

可能重复我在文档中阅读了该特定注释,但对于我所处的情况,我没有单击任何内容。现在更有意义了。我只是有一个类似的问题。重写ref更合适的方法不是手动,而是通过。例如,与其使用
echo>.git/refs/remotes/trunk
,不如使用
git-update-ref-no-deref-refs/remotes/trunk
git config --replace svn-remote.svn.fetch http://foo/project:refs/remotes/origin/trunk