【问题标题】:Converting part of a subversion repo to git将 subversion repo 的一部分转换为 git
【发布时间】:2015-02-05 09:49:17
【问题描述】:

首先让我说:我对git有相当全面的了解,但对subversion只有基本的了解。 对: 我的任务是将颠覆性回购移植到 git。挑战在于我不需要嵌套项目,而是需要进一步分离出一个文件夹,并从中创建一个新的 git 存储库。

subversion repo的结构如下:

http://path/to/repo/
->project1
->project2
  ->tags
    ->path/to/targetProject
  ->branches
    ->path/to/targetProject
  ->trunk
    ->path/to/targetProject

想要的是创建一个新的 git 存储库,其中仅包含 project2 的文件夹“targetProject”。我一直在搞乱 svn2git 和 git-svn,但到目前为止我只看到了迁移整个 project2 结构的选项。

【问题讨论】:

    标签: git svn migration


    【解决方案1】:

    解决方案位于该链接:http://svnbook.red-bean.com/en/1.7/svn.ref.svndumpfilter.html

    这是关于使用 svndumpfilter,它会构建一个完整转储存储库的转储,其中仅包含过滤的存储库,下一个可以解决您的问题的示例:

    $svndumpfilter include --targets FILE < fullDumpfile > filteredDumpFile
    

    “文件”的内容在哪里:

    /project2
    /tags/path/to/project
    /branches/path/to/project
    /trunk/path/to/project
    

    要获得你的第一个转储文件,你必须运行下一个命令(假设你在 svn 服务器上)

    $svn dump --bypass-prop-validation -q path/to/your/repo > fullDumpFile.dmp
    

    如果你在启动的 svn 中移动项目,你的过滤器依赖的原因可能会有一些问题。

    【讨论】:

    • 如果我理解正确的话:创建一个只包含相关文件的新 subversion repo,然后从中迁移一个 GIT repo?
    • 没错,你构建了一个新的 repo,它是一个过滤的 repo,只包含你要迁移的项目
    【解决方案2】:

    只要使用 git-svn,你可以指定哪个 svn 目录包含trunk,以防 svn repo 不使用标准布局:

    git svn init <url> --trunk=project2/trunk/path/to/targetProject
    git svn fetch
    

    git-svn man page 中解释得很清楚。

    [编辑] 由于 svn 没有标签或分支的概念(只有“副本”),所以在您的情况下,您将无法自动将它们转换为 git(因为没有包含 targetProject 目录副本的 svn 目录)。但是您可以通过将选定的 svn 目录视为 targetProject 的分支来解决此问题。初始获取完成后,在 .git/config 中为您想要的每个分支添加以下行:

    branches = project2/branches/{<branch_name>}/path/to/targetProject:refs/remotes/*
    

    所以最后,部分将如下所示:

    [svn-remote "svn"]
        url = https://repo-url
        fetch=project2/trunk/path/to/targetProject
        branches = project2/branches/{branch_one}/path/to/targetProject:refs/remotes/*
        branches = project2/branches/{branch_two}/path/to/targetProject:refs/remotes/*
    

    然后执行 git svn fetch。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多