鉴于我已经通过使用git svn clone --trunk=http://foo/project
指向svn在machine1上创建了一个git repo
我一直在使用'git svn rebase'的机器1上的svn进行新的修改
当我将git repo从machine1克隆到machine2时
我如何在机器2上重新命名svn我的git repo ???
到目前为止,我已经这样做了:
鉴于我已经在机器2上使用git svn init --trunk=http://foo/project
重新命名为svn
当我做'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 trunk以继续进行新的更改。我根本不打算回到SVN。
有什么想法吗?
我的环境设置:
git-svn version 1.7.9.5(svn 1.6.17)
git版本1.7.9.5
关于linux mint 13
答案 0 :(得分:2)
git svn init --trunk=http://foo/project
准备从Subversion获取?
还没。我们需要git commit和svn revision之间关系的元数据。
找出具有svn修订版git show
或git log -1
将SHA1写入.git/refs/remotes/trunk
echo <SHA1> > .git/refs/remotes/trunk
现在你可以git svn fetch
(git会在第一次尝试时重建rev map(可能是5分钟))。
上面的代码git repo用于从svn获取最新的更新。
答案 1 :(得分:0)
您可以设置本地存储库以使svn和远程知道它们指向相同的提交。
当你跑步(在机器2上)
git svn init --trunk=http://foo/project
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会更新您的转换地图。