我具有以下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
我试图将两个文件夹rootfolder1
和rootfolder2
导入到Git存储库中(然后我将使用git-filter-branch将它们拆分为单独的存储库)。
运行subgit import --svn-url https://server/svn/repo repo-root
,剩下的是一个trunkfolder1
和trunkfolder2
的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
参数。
对解决此问题有任何建议吗?
答案 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'。