我如何继续从一个最初不指向svn的git克隆中提取subversion
假设我已经在machine1上创建了一个git repo,方法是用我如何继续从一个最初不指向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
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