存储库中没有 TRUNK 的 SVN 到 GIT 迁移

SVN to GIT migration without TRUNK in repository

我有结构如下的 SVN 库: - BRANCHES 保存来自供应商存储库的代码(软件提供商代码) - DEV 从 BRANCHES 获取,开发人员使用它
- RC(release candidate) 开发代码提交给RC进行测试后 - 每次构建后发布的具有新功能的标签代码

我被要求将这些类型的 SVN 存储库移动到 GIT

如何构造 GIT w.r.t SVN? 如何在没有 TRUNK 的情况下将代码从 SVN 移动到 GIT? 与 Branches/DEV/RC/Tags

相比,如何在 GIT 中设置 Master/Head/Branches/Tags

如果你像这样克隆:

git svn clone svn://server.domain.org/pathtorepo

您将获得整个 SVN 目录结构的未修改克隆和转换为 git 的历史记录。

进入 git 后,您可以将目录转换为分支;

git filter-branch --subdirectory-filter ...

您可以使用 git filter-branch --tree-filter 进行较小的文件更改。

您可以使用 .git/info/graftsgit filter-branch 将分支附加到它们从其他分支分离出来的点。

但是合并比较困难,因为 SVN 没有标准的合并标记。

git svn 命令确实有解释 svn 目录结构的 "standard layouts" 的东西,但我不希望它对你有太大帮助。但是,您还可以使用其他选项。

但是如果你真的想把工作做到最好,你可能应该看看 Reposurgeon 工具。