兴趣部落的 Git 迁移实践
因为历史原因,刚进小组时,组内主要利用 SVN 作为兴趣部落的代码托管工具,最近组里重新定义了一套代码 Review 规范,而 SVN 不能满足我们的需求,再加上公司的 Git 平台已经成熟可用,我们便萌生了将兴趣部落的代码从 SVN 迁移到 Git 上的念头。经过几天的努力,现在代码已迁移完成,下面就把过程与总结写下来供大家参考。
方法1
先介绍一个简单粗暴的方法,TortoiseSVN 有自带的 Export 功能,可以将 SVN 的代码全部导出到一个新的文件夹下。下面简单描述下步骤,以 Github 为例。
先在 Github 上建一个 repository,并将之 clone 到本地,假设文件夹叫 A。然后找到你要迁移的 SVN 项目,右击选择 TortoiseSVN -> Export,选择 A 文件夹,确定后 SVN 项目中的代码便到了 A 文件夹中,下面就可以将这个项目当做一般的 Git 项目来对待了。
说这个方法简单粗暴,是因为这个方法其实跟将整个 SVN 项目的代码直接复制粘贴到 Git 项目文件夹下没多大差别,并且这次到 Github 上的提交会被当成整个项目的第一次提交,也就是以前的提交记录没有被迁移过来。
方法2
如果你想做的完美一点,不仅迁移代码,还要迁移以前的提交记录,那应该怎么做呢?那就要用到 git-svn 了,详细文档请参考:git-svn。
使用 git svn clone your-svn-url your-target-folder
可以将 SVN 的主干代码以及提交记录拉取到了本地目标文件夹 your-target-folder 中。这种方式只能迁移一个特定文件夹的代码(一般迁移 trunk)。但如果你不仅想迁移主干代码,还想将 branch 和 tag 的代码一并迁移,你可以使用: git svn clone root-path --trunk="trunk/project" --branches=“branches” --tags="tags"
。需要注意的是,trunk、branches 以及 tags 的路径是相对的。如果你的项目很庞大并且有很长的历史,那么迁移过程将会非常漫长(以天为单位)。如果你迁移过程中很幸运没遇见程序出错、电脑崩溃而最终成功的话,你可以执行 git branch -a
看看分支情况。因为我们没有迁移 branch 和 tag,所以不了解有什么坑。
新的文件夹是没有 .gitignore
文件的,所以需要新建一个。
当准备工作都做好后,下面可以将代码提交到远程仓库中:
git remote add origin your-git-repository
git push -u origin master
用户对应
如果 SVN 的账号和 Git 的账号名称不一样,并且 SVN 中的账户就是一个 ID,而 Git 中的账号是 username 和 email,SVN 的 ID 可以和 Git 的 username 和 email 在迁移过程中对应起来,具体做法如下:
// 在 SVN 项目根目录:
svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'
输出一列 SVN 用户列表,将之保存到 users.txt 中,并且修改账号对应关系,格式如下:
zhangsan = 张三 <zhangsan@tencent.com>
...
wangwu = 王五 <wangwu@tencent.com>
上面的 zhangsan
就是 SVN 的 ID,后面对应的就是 username 和 email。有了 users.txt 的账号对应信息,下面可以迁移了:
git svn clone your-svn-url --authors-file=users.txt your-target-folder
也就是在迁移命令中加入 --authors-file
参数。
整体来看,迁移过程很顺利,没有很复杂的步骤。如果你在迁移中有什么困惑,可以去官网上瞧瞧。
兴趣部落的 Git 迁移实践相关推荐
- 兴趣部落的前端性能优化实践概览
本文对兴趣部落项目前端开发中使用到的性能优化方式进行总结.兴趣部落项目是手机QQ(以下简称手Q)中最大的纯网页应用,每日有大量的用户访问,对于腾讯这样一个对产品有着极致要求的公司,性能优化是一个绕不开 ...
- VPGAME 的 Kubernetes 迁移实践
作者 | 伍冲斌 VPGAME 运维开发工程师 导读:VPGAME 是集赛事运营.媒体资讯.大数据分析.玩家社群.游戏周边等为一体的综合电竞服务平台.总部位于中国杭州,在上海和美国西雅图分别设立了电竞 ...
- 面向亿万级用户的QQ一般做什么?——兴趣部落的 Web 同构直出分享
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:李强,腾讯web开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq. ...
- git最佳实践_Git最佳实践如何为我节省大量的返工时间
git最佳实践 by Hemal Patel 通过赫马尔·帕特尔 Git最佳实践如何为我节省大量的返工时间 (How Git best practices saved me hours of rewo ...
- 兴趣部落老是显示无法连接服务器失败,qq兴趣部落为什么停运
很多人都有玩过qq兴趣部落,但是最近官方宣布兴趣部落即将下线,很多用户都不是很了解qq兴趣部落为什么停运.针对这一点,非凡小编给大家整理了相关的内容分享,赶紧来了解一下吧! qq兴趣部落为什么停运 一 ...
- Git 最佳实践:分支管理
5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching ...
- mysql 迁移 nosql_从关系型Mysql到Nosql HBase的迁移实践
2013年11月22-23日,作为国内唯一专注于hadoop技术与应用分享的大规模行业盛会,2013 Hadoop中国技术峰会(China Hadoop Summit 2013)于北京福朋喜来登集团酒 ...
- k8s删除deployment_VPGAME k8s迁移实践(5) Deployment 与 Service 配置
作者:Charl 在 CI/CD 流程中完成 docker 镜像的打包任务之后需要将服务所对应的镜像部署到 k8s集群中.k8s 提供了多种可以编排调度的资源对象.首先,我们简单了解一下 k8s 中的 ...
- [专栏精选]Unity中的Git最佳实践
本文节选自洪流学堂公众号技术专栏<大话Unity2018>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 小新:"我昨天尝试了一下使用Git来管理Unity项目 ...
最新文章
- CornerNet-Lite:CornerNet粗暴优化,加速6倍还提点了 | BMVC 2020
- 集成学习需要理解的一些内容
- 如何根据CSD寄存器计算SD卡容量(csd v1.0 csd v2.0)
- 网页代码抓取工具_MAC网页颜色代码提取工具
- boost::statechart::in_state_reaction相关的测试程序
- jQuery-1.9.1源码分析系列(六) 延时对象应用——jQuery.ready
- SQL Server - 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
- java服务端用到的javase的基础知识_JavaSE——网络编程基础知识
- Sketch for mac v78 矢量绘图软件
- 桌面计算机 回收站图标,桌面回收站图标不见了?回收站图标没了?3种方法快速解决...
- 中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...
- BGP 路由聚合实验
- 研究生看论文的看的是什么
- 前端剑法第二式————淬焰
- 禅与摩托车维修艺术摘录
- 一篇文章带你快速上手Airtest和Poco
- 电子技术——伪NMOS逻辑电路
- Android总结(1-3章)
- 6大多人协作工具推荐
- 计算机应用基础 小组讨论,【《计算机应用基础》教学探讨】 计算机应用基础 2018...