背景
之前的一个项目使用Git进行源代码管理,现在项目中止,需要把代码迁移到公司大部分项目都在用的svn上进行存档。
迁移后的svn需要保留原始git的修改记录。
首先需要说明一下,因为目标svn是公司服务器,个人是没有服务器访问权限的,因此迁移过程困难重重,如果有服务器权限,那么最简单的方案是使用subgit,只需要在git端和svn服务器进行简单的配置,即可完美迁移。下面的讨论基于没有svn服务器权限的方案。
历经好几天的折腾终于找到了一个不算完美的解决方案,这里记录一下。
解决思路
经过了大量的搜索和AI的讨论,对于我的情况,最好的办法还是使用git svn。当然这中间进行了大量的妥协:
git子模块问题(submodules)
待迁移的git项目中使用到了子模块,目前我还是没有找到可以完美保留子模块的方法,最后采用的折衷方案是使用git-filter-repo移除子模块相关的提交。否则在使用git svn dcommit提交到svn时,会因为找不到子模块对应的提交hash链接而失败。
原始提交人问题(author)
由于svn提交的提交人