【问题标题】:Converting non-standard Subversion repository to git将非标准 Subversion 存储库转换为 git
【发布时间】:2010-10-07 02:34:12
【问题描述】:

我有一个存储库,它的布局是这样的:

树干/ 项目A 项目B 分支机构/ 项目A-1.0 项目B-1.0 标签/ 项目A-1.0.1 项目B-1.0.1

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

每当我尝试指定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 存储库也是理想的,在这种情况下,如果没有真正的主控,我不会有任何问题。

【问题讨论】:

    标签: svn git migrate


    【解决方案1】:

    您是否考虑过 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 存储库。
    会将所有分支和标签导入为远程 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

    【讨论】:

    • 我没有,这对我来说是新的。我会调查的。谢谢!
    • 这实际上不起作用。它遗漏了一整年的提交。
    • 事实证明,这可能是我的机器出了问题。 git svn clone 对我来说也开始失败。最终,我们能够克隆这个东西,尽管对历史的处理方式有所不同。
    • VonC,在您提供的 URL 上似乎没有任何文件可供 svn2git 下载?
    • @Peter:svn2git 现在链接到stackoverflow.com/questions/572893/…,其中提到了更多最新的 svn2git 存储库。
    【解决方案2】:

    我最终做的是克隆存储库的根目录并为每个项目复制新的 git 存储库并重新安排内容。它既不干净也不漂亮,但它是我不再需要经常查看的遗留代码。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多