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
我正在尝试将 rootfolder1
和 rootfolder2
这两个文件夹导入 Git 存储库(然后我将使用 git-filter 将它们拆分到单独的存储库-分支)。
运行 subgit import --svn-url https://server/svn/repo repo-root
,我剩下一个 Git 存储库,其中包含 trunkfolder1
和 trunkfolder2
。传递 --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' 指令排除。
我有以下 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 将它们拆分到单独的存储库-分支)。
运行 subgit import --svn-url https://server/svn/repo repo-root
,我剩下一个 Git 存储库,其中包含 trunkfolder1
和 trunkfolder2
。传递 --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' 指令排除。