0

我有以下 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

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

运行subgit import --svn-url https://server/svn/repo repo-root时,我留下了一个带有trunkfolder1和的 Git 存储库trunkfolder2。传递--trunk repo给了我一个空的 Git 存储库。运行为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参数。

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

4

1 回答 1

0

如果您最终打算将这些“根文件夹”放入单独的存储库中,那么我认为在导入阶段将它们导入不同的 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

也可以将两个“根文件夹”导入单个 Git 存储库,但需要额外的步骤才能摆脱“主干”:

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

    subgit 配置https://server/svn/repo GIT_REPO

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

    GIT_REPO/subgit/config

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

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

    保存并关闭文件。

  • 运行导入:

    subgit 导入 GIT_REPO

在这种情况下,GIT_REPO 将仅包含“rootfolders”,因为“主干”被“excludePath”指令排除。

于 2018-12-17T05:47:07.953 回答