从 SVN 迁移到 Git
时间:2022-07-22
本文章向大家介绍从 SVN 迁移到 Git,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
从 SVN 迁移到 Git
准备工作
确认所有用户的本地修改都签入到服务器, 将 SVN 源代码的分支尽可能的合并到主干, 已经发布的做好归档信息, 并备份 SVN 库。 虽然迁移到 Git 的风险不大, 但是备份一下总是好的。
安装 Git , 这看起来是废话, 不装 Git 怎么迁移?
将用户映射到 Git
创建一个用户映射文件, 将 SVN 用户映射到 Git 用户, 这样可以保留用户的签入历史信息, 比如用户输入的修改记录等, 这个文件看起来是这样子的:
svnuser1 = gituser1 <gituser1@yourcompany.com>
svnuser2 = gituser2 <gituser2@yourcompany.com>
这样, 用户 svnuser1 签入的历史信息在迁移之后就会映射成 gituser1 , svnuser2 映射程 gituser2 。
编辑好用户映射文件之后, 保存为 users.txt 。
克隆 SVN 库
假设 svn 库的布局是标准的 trunk 、 branches 以及 tags , 运行下面的命令开始克隆 svn 库:
git svn clone <svn repo url> --no-metadata -A users.txt -t tags -b branches -T trunk <destination dir name>
Git 会克隆 svn 完整的历史记录, 可能会需要很长的时间, 视 svn 库的历史而定。
转换分支及归档
克隆完成之后, 所有的 svn 归档在 git 看来都是远程分支 (remote tags) , 不是真正的 git 归档, 需要将他们手工转换为 git 归档, 然后再删除远程分支, 对于每一个分支或归档, 做如下操作(以 v1.0.1 归档为例):
git tag v1.0.1 tags/v1.0.1
git branch -r -d tags/v1.0.1
所有的归档信息处理完成之后, git 本地库就有了完整的历史记录。
提交到 Git 库
现在可以放心的将代码提交到自己的 git 服务器了, 命令如下:
git remote add origin git@github.com:userid/project.git
git push origin master --tags
总的来说, 从 svn 迁移到 git 还是很容易的。
- ASP.NET Web API自身对CORS的支持: EnableCorsAttribute特性背后的故事
- 【黑客解析】黑客是如何实现数据库勒索的 ?
- 直播回看:高可用架构入门 —— 腾讯云架构演变及经验
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之一 :从上云开始
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之二:更好的网络
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之三:更大的存储
- Socket学习总结系列(一) -- IM & Socket
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构 之四:替你分心的负载均衡
- 【腾讯云的1001种玩法】十分钟搞定云架构 · 什么是Bucket、什么是Object
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构 · 负载均衡的最佳实践
- 【黑客浅析】像黑客一样思考
- 【腾讯云的1001种玩法】 十分钟轻松搞定云架构 · 负载均衡的几种均衡模式
- ASP.NET Web API的Controller是如何被创建的?
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构:COS的两种上传模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法