当前位置:  开发笔记 > 开发工具 > 正文

将非标准Subversion存储库转换为git

如何解决《将非标准Subversion存储库转换为git》经验,为你挑选了1个好方法。

我有一个存储库,其布局如下:

    trunk/
        projectA
        projectB
    branches/
        projectA-1.0
        projectB-1.0
    tags/
        projectA-1.0.1
        projectB-1.0.1

我想将它们转换为单独的git存储库,其中trunk/projectA作为顶级目录,所有它的分支作为git branches.

每当我尝试指定git svn init类似内容时git svn init -T trunk/projectA -b branches -t tags http://svn.example.com,后续操作git svn fetch就会在不同的版本上神秘地失败.有时它会一直到200,有时会停止.

我目前的想法是,我应该创建一个git存储库,它将整个subversion存储库镜像为一个单独的实体,每个项目都有子目录.然后我会用git-filter-branch子目录重写到项目的根目录.

但是,我不确定如何使分支表现得像我想要使用git-filter-branch和.

另外,理想的做法是为每个项目的"主干"创建一个具有不同分支的单个git仓库,在这种情况下我没有问题没有真正拥有主人.



1> VonC..:

您是否考虑使用svn2git将svn导入git存储库?

这比git svn clone在svn中有这个代码更好 :

  trunk
    ...
  branches
    1.x
    2.x
  tags
    1.0.0
    1.0.1
    1.0.2
    1.1.0
    2.0.0

git-svn将通过提交历史记录来构建一个新的git repo.
它将所有分支和标签导入为远程svn分支,而你真正想要的是git-native本地分支和git标记对象.
因此,在导入此项目后,您将获得:

  $ git branch
  * master
  $ git branch -a
  * master
    1.x
    2.x
    tags/1.0.0
    tags/1.0.1
    tags/1.0.2
    tags/1.1.0
    tags/2.0.0
    trunk
  $ git tag -l
  [ empty ]

在你的项目完成svn2git后,你会得到这个:

  $ git branch
  * master
    1.x
    2.x
  $ git tag -l
    1.0.0
    1.0.1
    1.0.2
    1.1.0
    2.0.0

最后,它确保master的HEAD与svn repo的当前主干相同.

所以在你的情况下,它会给你实际的git分支来申请git-filter-branch.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有