分支与svn2git一起转移

时间:2010-09-08 09:44:39

标签: svn git

这个问题可能是因为我不明白分支在SVN和Git技术上是如何工作的。

但是当我使用svn2git时,一些分支在refs / remotes /中,有些则不是。例如trunk是/ refs / remotes / trunk。

当我检查新git repo中的master分支时,它不是svn trunk而是去年的一些旧分支(看起来它是完全随机选择的)。标签移动正确。

如果我看一下Trac中的svn repo,看起来布局是正确的(树干,树枝,标签),树干指向它应该的位置。它看起来像正确显示的分支(没有遥控器)在.git / config中,其余的不是。

这里发生了什么,我该怎么做才能正确转换svn repo?我是否应该将远程分支的定义添加到.git / config中?然而,这不能解决主干问题。

编辑:我刚刚意识到:某些东西与本地分支完全相同,区别在于有一个本地分支“master”和远程分支“remotes / trunk”,所有其他19个分支看起来相似。问题似乎是master并没有指向“remotes / trunk”,而是指向一些随机提交。

这只是svn2git中的一个错误吗?

1 个答案:

答案 0 :(得分:0)

一定是个bug。根据github for git2svn的自述文件

  

并且检查到主人的代码最终成为当前的代码   在你的svn主干中,而不是你最后一次提交的svn分支   在。。

您可以尝试手动指定分支以查看是否会获得更一致的结果

 svn2git http://svn.example.com/path/to/repo --trunk trunk --tags tags --branches branches

如果这不起作用,你可以在.gitconfig文件中添加一个alliase,你可以在svn2git之后运行它,它将用trunk替换master

[alias]
  fixport = !sh -c 'git checkout remotes/trunk trunk && git checkout master && git reset --hard trunk'

然后你正常做你的svn2git ...当它完成后运行git fixport,它会将一个本地的remotes / trunk副本签出为trunk并重置master等于。