如何解决修改SVN到git的迁移
过去,在我现在的雇主开始之前的某个时候,一名devops工程师(将保持匿名)似乎采取了一条直接而粗略的路线,从SVN迁移到git。我的评估是,所采取的行动总计为:
svn export repos /tmp/repos
cd /tmp/repos
git init
git add --all
git commit -m 'Initial Commit'
当然,没有历史记录。许多存储库似乎都是在2018年3月5日由金属制成的。
在事实发生之后,如果我甚至仍然可以使用那些回购协议,我可以采取什么措施来用SVN历史记录“修改”这些git回购协议?有任何向导吗?
还是应该在每次看到带注释的代码并诅咒损失时就挥舞拳头?鉴于git的SHA和提交树模型,我怀疑我会握紧拳头。
解决方法
假设您仍然拥有SVN存储库,请用svn2git
进行转换,将该存储库设置为上游,然后在该存储库的顶部重写该存储库。
首先,以防万一,备份存储库。
完成svn2git
转换后,切换到其他存储库,并将svn2git设置为远程。
$ git remote add svn <path to the svn2git repo>
$ git fetch svn
A - B - C [svn/master]
D - E - F [master]
D是原始的svn export
提交。
现在可以基于svn / master了,但是git filter-repo
可以在这种复杂的情况下做得更好。 Replace的旧svn export
提交了svn/master
的提示。然后,git filter-repo
重写历史记录以使其永久保存。
$ git replace D C
$ git filter-repo --force
A - B - C [svn/master]
\
E1 - F1 [master]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。