使用subgit进行svn迁移至git(branch,tags)
前言:
最近公司需要將整體項目從svn遷移至gitlab上,經(jīng)過幾天的研究,現(xiàn)記錄一下流程
整體思路是進(jìn)行一次導(dǎo)入:
先通過subgit將svn整個import至本地,在與git上的項目進(jìn)行合并.
1.硬件環(huán)境
git:git version 2.7.4
svn: 1.6.11
? ? subgit:3.2.2
2.下載subgit
官網(wǎng)下載subgit: https://subgit.com/
將subgit解壓:
tar -zcvf subgit-3.2.2.zip3.在gitlab上新建一個需要合并的項目
進(jìn)入gitlab管理界面,新建項目:lclctest
git@xx.xx.xx.xx:lclc/lclctest.git (我這邊新建了一個lclc的組)建好以備用.
?4.進(jìn)入subgit-3.2.2/bin 目錄,使用configure命令
./subgit configure http://ip:port/svn/lclctest lclctest完成后會有一些提示:
1) Adjust Subversion to Git branches mapping if necessary:/root/lclctmp/tmp/subgit-3.2.2/bin/lclctest/subgit/config 2) Define at least one Subversion credentials in default SubGit passwd file at:/root/lclctmp/tmp/subgit-3.2.2/bin/lclctest/subgit/passwdOR configure SSH or SSL credentials in the [auth] section of:/root/lclctmp/tmp/subgit-3.2.2/bin/lclctest/subgit/config 3) Optionally, add custom authors mapping to the authors.txt file(s) at:/root/lclctmp/tmp/subgit-3.2.2/bin/lclctest/subgit/authors.txt 4) Run SubGit 'install' command:subgit install lclctest意思是進(jìn)行一些配置,然后進(jìn)行install
配置config:由于3.2.2默認(rèn)是配置好的,可以不進(jìn)行配置
trunk = trunk:refs/heads/master branches = branches/*:refs/heads/* branches = branches/features/*:refs/heads/features/* branches = hotfixes/*:refs/heads/hotfixes/* tags = tags/*:refs/tags/* shelves = shelves/*:refs/shelves/* 配置用戶映射文件 author.txt 格式為:svnUser = Git User <user@example.com> (也可以不修改)
5.進(jìn)行install
此步將連接svn,需要耗時一段時間.
完成后就把svn代碼遷移到本地庫了,這時候就需要用git push到遠(yuǎn)程庫中
6.clone版本
git clone ./lclctest lclctest.git7.進(jìn)入lclctest.git目錄
git remote set-url origin git@yourip:lclc/lclctest.git(之前創(chuàng)建的git項目) git push origin master在push的時候發(fā)現(xiàn)提示填寫密碼:
git@ip's password:此時說明需要進(jìn)行身份驗證,我們給git添加一個keygen就行了
7.1:生成keygen
cd ~ ssh-keygen -t rsa -C "your_email@example.com"生成的文件在 .ssh文件下有 id_rsa和id_rsa.pub文件
7.2:上傳keygen
打開gitlab的管理界面
?
? 將id_rsa.pub文件中的內(nèi)容復(fù)制到Key的文本框里.
再執(zhí)行步驟7的git push origin master命令上傳master
8.上傳分支.
進(jìn)入lclctest.git目錄,使用命令查看分支
git branch -a結(jié)果:
* masterremotes/origin/HEAD -> origin/masterremotes/origin/bugfixremotes/origin/developremotes/origin/featureremotes/origin/master本項目一共有3個分支,分別是bugfix,develop,feature,分別進(jìn)行上傳
git push origin remotes/origin/feature:refs/heads/feature git push origin remotes/origin/bugfix:refs/heads/bugfix git push origin remotes/origin/develop:refs/heads/develop注意:冒號后面為遠(yuǎn)程庫中的地址,必須以refs/heads開頭.
9.上傳tags
git push --tags?
?參考資料:
http://lattecake.com/post/20051
http://stackoverflow.com/questions/23251394/subgit-import-and-multiple-branches-directories
?
轉(zhuǎn)載于:https://www.cnblogs.com/lic309/p/6290597.html
總結(jié)
以上是生活随笔為你收集整理的使用subgit进行svn迁移至git(branch,tags)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构建闭环式的研发运维体系----云效ED
- 下一篇: RxJava系列四(过滤操作符)