最近在使用华为软件开发云进行开发项目管理,目前华为软件开发云支持500M的免费项目空间,而且还可以在线编译和构建,不用担心开发环境和生产环境的不同,很好的体现了DevOps的开发理念.
之前一直是用svn做代码管理,而华为软件开发云是使用目前国外比较流行的Git进行代码版本控制.在网上查询了迁移方式,发现Git本身有命令可以直接克隆SVN的代码库,而且迁移后能保持原SVN的提交记录.以下是总结的SVN代码库向华为软件开发云迁移的过程.
主要步骤
1.通过git svn clone命令将SVN代码库克隆至本地
2.华为开发云创建代码仓库,获取Git仓库地址
3.本地新建test分支,提交后合并至master分支.开发云代码库中根据引导完成代码合并. (新建分支合并的原因后面会讲.)
准备条件
1.准备要迁移的svn代码库地址;本地安装Git
2.登录华为软件开发云(https://www.hwclouds.com/devcloud/),并已创建好项目.
完整迁移流程
1.通过git svn clone命令将SVN代码库克隆至本地
$ git svn clonehttps://SVN服务器地址/ibeisi.iPMSystem/ --no-metadata --trunk=trunk
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtZjcwYWM5MGZlZDZmOTJiMi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
#查看SVN提交记录
$ cd ibeisi.iPMSystem/
$ git log
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNTVmZTQyMWY1MzVjNWJhNS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
2.华为软件开发云创建代码仓库,获取Git仓库地址
代码仓库创建好之后,需根据在线帮助,添加SSH秘钥,步骤很详细,此处就不作赘述.
SSH秘钥主要是本地与华为软件开发云代码库的一个管理,无需每次通过用户名和密码验证
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtMWFlNzQ3ODIyZDBkZjYyOS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtMGQ4NWJhYTljMTI3ZWViMS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtZmYzNDJiN2FjNWZhZmY3Ny5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtMzJiYTVkNzVlOWQ1M2I2Yi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNzRiYzE1ODE5YzEwMzU4NS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtYjczZTEwMTVmN2NiOTgxOC5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtMDQ4NDU0OTk0ZTU1NDdhZi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
打开代码仓库,拷贝代码仓库地址
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNzQxNDMzY2FmOGEwMTU4Zi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
3.根据步骤2中获取到的代码仓库地址,本地添加远程仓库地址
$ git remote add origin
git@codehub.devcloud.hwclouds.com:3bf9c1ed148142d880d759e80100b923/iPMSystem.git
#拉取远程分支
$ git pull
可以看到代码仓库中默认已建好主分支,如果无需保留SVN原提交记录,可以直接将代码通过master分支进行提交(commit)和推送(push);但我想保留原提交记录,所以下面以新建分支合并到master的方式进行代码上传。
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNjM5Yjk1Y2VlZmM2MWY2NS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
4.本地新建分支test,并发起与master分支合并请求
$ git branch test
#checkout命令会让当前切换到test分支,及后续操作都只影响test分支
$ git checkout test
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtYTRhN2I3NmZjNjY0NWI5ZC5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
#新建空文件,原因是若没有更改git不会进行push操作
$ vi test.txt
#空文件添加至分支中
$ git add .
#git的commit命令只是在本地提交,并不会上传至代码库.
$ git commit -m "上传代码新建缓存分支"
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtMmI1Njc1Y2M0MjE2ZjUwZi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
#通过以下push命令可以发起test与master分支合并请求.
$ git push--set-upstream origin test
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNDg2ZDIwYzJiYjQxMjE4OC5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
5.刷新代码库页面(或重新打开代码库),可以看到合并请求的处理指引,按照指引操作即可完成合并.
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtOGNiZGEwYTE3YTM3Mzc1Zi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtOGJkOWI0MjFiMDU3M2ZhZS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtYjBkNjFjNDliMjUwYThhZi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtY2VjOWVmYmYyOTIzZWE1Yi5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNzNmOGY2NGIwODM3ZmZlNS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtY2NhYmY1NDE4NmJlNGU0NS5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
可以看到原svn代码库的提交记录都被完整保存了下来.
![SVN如何迁移到Git? SVN如何迁移到Git?](https://image.shishitao.com:8440/aHR0cDovL3VwbG9hZC1pbWFnZXMuamlhbnNodS5pby91cGxvYWRfaW1hZ2VzLzU2MDk2MzYtNjhlMDc1MTk3OTk0ZmFhNC5wbmc%2FaW1hZ2VNb2dyMi9hdXRvLW9yaWVudC9zdHJpcCU3Q2ltYWdlVmlldzIvMi93LzEyNDA%3D.png?w=700&webp=1)
至此, svn代码库可以说完整地迁移到了华为软件开发云的CodeHub中。