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

时间:2018-12-15 14:51:04

标签: git svn subgit

我具有以下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-branch将它们拆分为单独的存储库)。

运行subgit import --svn-url https://server/svn/repo repo-root,剩下的是一个trunkfolder1trunkfolder2的Git存储库。传递--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参数。

对解决此问题有任何建议吗?

1 个答案:

答案 0 :(得分: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中,因此您无需拆分它们。

此外,我建议在导入过程中提供一个authors文件,以便将SVN用户转换为合适的Git用户,在此处找到更多详细信息:

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

也可以将两个“ rootfolders”都导入到单个Git存储库中,但这需要额外的步骤来摆脱“ trunk”:

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

    subgit configure https://server/svn/repo GIT_REPO

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

    GIT_REPO / subgit / config

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

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

    保存并关闭文件。

  • 运行导入:

    subgit import GIT_REPO

在这种情况下,由于'excludePath'指令排除了'trunk',因此GIT_REPO仅包含'rootfolders'。