存储库中没有 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/grafts
和 git filter-branch
将分支附加到它们从其他分支分离出来的点。
但是合并比较困难,因为 SVN 没有标准的合并标记。
git svn
命令确实有解释 svn 目录结构的 "standard layouts" 的东西,但我不希望它对你有太大帮助。但是,您还可以使用其他选项。
但是如果你真的想把工作做到最好,你可能应该看看 Reposurgeon 工具。
我有结构如下的 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/grafts
和 git filter-branch
将分支附加到它们从其他分支分离出来的点。
但是合并比较困难,因为 SVN 没有标准的合并标记。
git svn
命令确实有解释 svn 目录结构的 "standard layouts" 的东西,但我不希望它对你有太大帮助。但是,您还可以使用其他选项。
但是如果你真的想把工作做到最好,你可能应该看看 Reposurgeon 工具。