从 SVN 多存储库迁移到 GIT

Migrating from SVN multi-repo to GIT

我是 git-svn 桥的新手,面临着从 SVN 存储库迁移到 GIT 的任务。 SVN结构看起来真的很可怕:

root
  base
    server
      core
         branch
         tags
         trunk
      webapp
         branch
         tags
         trunk
       ....
    client
      core
         branch
         tags
         trunk
      ....
    ....
  ....

作为 "talented svn migrate-master",我执行了 git svn clone ..../root 并克隆了整个存储库。 GIT:

我没有可见的分支

$ git branch -a * master remotes/git-svn

我可以轻松导航到 root-base-server-core-branch-my-awesome-branch,它看起来像普通文件夹。

如何继续svn2git对话?看起来我应该从头开始,但是克隆这个邪恶花了一个星期,我不想再等了...

您在该存储库中有多个 svn 项目。您想将它们组合成 git 吗? 您可能需要考虑为客户端、核心和网络应用创建一个单独的 git 存储库。

查看 git svn clone 的 --branches,它可以使用多个通配符,你可能需要那个糟糕的 svn 结构。类似于 --branches=*/*/*/*/branch/*

您也可以使用多个 --branches,如 --branches=coked/out/path/branch/* --branches=totally/messed/up/path/branches/*

来自帮助:

       -T<trunk_subdir>, --trunk=<trunk_subdir>, -t<tags_subdir>, --tags=<tags_subdir>, -b<branches_subdir>,
       --branches=<branches_subdir>, -s, --stdlayout
           These are optional command-line options for init. Each of these flags can point to a relative repository path
           (--tags=project/tags) or a full url (--tags=https://foo.org/project/tags). You can specify more than one --tags and/or
           --branches options, in case your Subversion repository places tags or branches under multiple paths. The option
           --stdlayout is a shorthand way of setting trunk,tags,branches as the relative paths, which is the Subversion default. If
           any of the other options are given as well, they take precedence.