Subgit 导入没有标准布局的根目录

Subgit importing a root directory without standard layout

我有以下 SVN 存储库结构。这不是故意的,在我参与之前有人做了一些奇怪的事情。

https://server/svn/repo
https://server/svn/repo/rootfolder1
https://server/svn/repo/rootfolder2
https://server/svn/repo/trunk
https://server/svn/repo/trunk/trunkfolder1
https://server/svn/repo/trunk/trunkfolder2

我正在尝试将 rootfolder1rootfolder2 这两个文件夹导入 Git 存储库(然后我将使用 git-filter 将它们拆分到单独的存储库-分支)。

运行 subgit import --svn-url https://server/svn/repo repo-root,我剩下一个 Git 存储库,其中包含 trunkfolder1trunkfolder2。传递 --trunk repo 给我一个空的 Git 存储库。 运行 as subgit import --svn-url --trunk repo https://server/svn repo-root 给我以下错误:

IMPORT FAILED

error: svn: E175002: PROPFIND of '/': 405 Method Not Allowed (https://server)

我也试过 subgit --import --trunk . --svn-url https://server/svn/repo repo-root 但是 subgit 抱怨 --trunk 参数。

关于解决此问题的任何建议?

如果您最终打算将这些 'rootfolders' 放入单独的存储库,那么我认为在导入阶段将它们导入不同的 Git 存储库是合理的。可以通过以下两条命令完成:

subgit import --trunk rootfolder1 --username <svn user name> --password <svn user password> --non-interactive --trust-server-cert --svn-url https://server/svn/repo <GIT_REPO>

subgit import --trunk rootfolder2 --username <svn user name> --password <svn user password> --non-interactive --trust-server-cert --svn-url https://server/svn/repo <GIT_REPO_2>

在这种情况下,'rootfolder1' 将导入到 GIT_REPO 中,而 'rootfolder2' 将导入到 GIT_REPO_2 中,因此您不需要拆分它们。

此外,我建议在导入过程中提供一个作者文件,以便将 SVN 用户翻译成合适的 Git 用户,请在此处找到更多详细信息:

https://subgit.com/documentation/import-book.html#authors_file

将两个 'rootfolders' 都导入到一个 Git 存储库中也是可能的,但是需要额外的步骤来摆脱 'trunk':

  • 为导入准备一个新的 Git 存储库:

    subgit 配置https://server/svn/repoGIT_REPO

  • 在文本编辑器中打开 SubGit 配置文件:

    GIT_REPO/subgit/config

  • 按以下方式更改映射配置:

    [svn]
    
        trunk:refs/heads/master
        excludePath = /trunk
    

    保存并关闭文件。

  • 运行导入:

    subgit 导入 GIT_REPO

在这种情况下,GIT_REPO 将仅包含 'rootfolders',因为 'trunk' 已被 'excludePath' 指令排除。