首页 文章

Svn - >带有几个主干/分支/标签的git迁移

提问于
浏览
4

我有一个SVN存储库,其中包含以下 current 结构:

  • project1

  • 分支机构

  • 主干

  • 标签

  • project2

  • 分支机构

  • 主干

  • 标签

哪个 originally 有这个结构:

  • 项目

  • 分支机构

  • 主干

  • proj1

  • proj2

  • 标签

也就是说,该项目被分成两个独立的“子存储库”(或者你想称之为的任何东西)

有没有办法将其迁移到git without losing history ?对于这种情况,svn2git会比git-svn更好吗?还有其他迁移工具吗?

EDIT :我按照建议尝试了git svn clone,但是,正如我想的那样,它并没有遵循从旧结构到新结构的转变 . 它只导入了新结构的修订版 .

5 回答

  • 0

    首先我将主干转换为git:

    git svn clone url-to-project -s
    

    然后我转换了每个项目:

    git svn clone url-to-project1 -s
    git svn clone url-to-project2 -s
    ...
    

    然后,对于每个项目,我使用移植物和过滤器分支从主干附加了先前的历史 .

    我只是blogged about it .

  • 2

    你有没有试过内置的

    git svn clone
    

    git-svn

  • 0

    svn2git只是在下面使用“git svn”,所以它本身不会“更好” . 它只是制作漂亮的标签和分支,并清理干净的svn . 如果这就是你想要的,我会继续在两个子存储库中单独使用它 . 它将获得所有适当的历史记录 .

  • 3

    您的"current"结构已包含先前结构的所有历史记录 . 因此,使用git svn clone克隆每个项目应该可以正常工作 .

    没有必要告诉Git在trunk目录下有多个项目的先前结构 .

    Git的优点在于,您可以根据自己的喜好尝试迁移,直到您对结果感到满意为止 .

  • 0

    假设标准的Subversion布局,使用 git svn clone -s SVN_REPOS 让git克隆Subversion存储库 . 您将获得一个名为master的本地git分支,但 git branch -a 将显示所有远程分支 . Subversion分支只有分支名称,但标签的分支名称为 tags/tag_name .

    在本地克隆时不要重复使用分支/标记名称! git不喜欢那样 .

    这本指南对我帮助很大 .

    http://www.viget.com/extend/effectively-using-git-with-subversion/

相关问题