【问题标题】:From svn to git, with a moved trunk从 svn 到 git,带有移动的树干
【发布时间】:2013-10-17 00:10:17
【问题描述】:

我正在尝试将我的 svn 存储库切换到 git。这是一个旧的存储库,以前的维护者之一为每个新版本移动了主干。例如,以前的存储库位于:

  • svn+ssh://svn.mycompany.com/project/release_1/trunk

现在,我们当前的主干在:

  • svn+ssh://svn.mycompany.com/project/release_N/trunk

当我签出 SVN 第二个存储库时,我拥有完整的历史记录,包括在复制之前。但是,当我 git-svn 第二个存储库时,我没有旧的历史记录(来自 release_1,...)。第一次提交是release_{N-1}release_N/trunk 的副本。

这是我尝试过的:

  • git svn clone --no-minimize-url --authors-file my-authors-file svn+ssh://svn.mycompany.com/project/release_N/trunk my_project.git

由于这不起作用,我尝试了其他方法。假设“复制提交”是 K,我试过了:

  • git svn clone --no-minimize-url -r BASE:K --authors-file my-authors-file svn+ssh://svn.mycompany.com/project/release_N/trunk my_project.git李>

这次 git-svn 没有找到任何提交。

你知道是否有一个魔术技巧来获得完整的历史吗?

【问题讨论】:

    标签: git svn migration


    【解决方案1】:

    这是我对问题的理解:
    你的历史分布在几个 svn 分支(碰巧都被称为主干)。 迁移到 git 时,您会想要所有这些历史记录。

    我认为以下方法可以解决您的问题:

    git svn init my_project.git
    
    git config svn-remote.svn.url svn+ssh://svn.mycompany.com/project
    git config svn-remote.svn.fetch release_N/trunk:refs/remotes/trunk
    git config svn-remote.svn.branches */trunk:refs/remotes/*
    git config svn.authorsfile my-authors-file
    
    git svn fetch
    

    这将在您的 git 存储库中创建 release_N 分支作为主干,其余版本作为不同的分支。

    据我所知,你不能让一个 git svn 分支指向多个 url,我认为这是你想要做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2017-04-08
      • 1970-01-01
      • 2016-09-08
      • 2015-07-11
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多