代码之家  ›  专栏  ›  技术社区  ›  Makis

svn2git转账分行

  •  7
  • Makis  · 技术社区  · 14 年前

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

    如果我看一下Trac中的svn repo,看起来布局是正确的(trunk、branchs、tags),trunk指向它应该指向的地方。看起来正确显示的分支(没有远程)也在.git/config中,其余的没有。

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   matthewdaniel    13 年前

    一定是虫子。根据github for git2svn的自述文件

    签入master的代码最终是当前 在svn主干中,而不是在上一次提交的svn分支中

    您可以尝试手动指定分支,看看这样是否会得到更一致的结果

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

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

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

    然后你做你的svn2git。。。正常情况下,完成后运行gitfixport,它会将remotes/trunk的本地副本签出为trunk,并将master重置为等于trunk。