使用subgit進行svn遷移至git(branch,tags)

前言:git

  最近公司須要將總體項目從svn遷移至gitlab上,通過幾天的研究,現記錄一下流程app

  總體思路是進行一次導入:ssh

  先經過subgit將svn整個import至本地,在與git上的項目進行合併.svn

1.硬件環境gitlab

  git:git version 2.7.4
  svn: 1.6.11post

    subgit:3.2.2
2.下載subgit ui

  官網下載subgit: https://subgit.com/url

  將subgit解壓:    spa

tar -zcvf subgit-3.2.2.zip 

3.在gitlab上新建一個須要合併的項目code

  進入gitlab管理界面,新建項目:lclctest  

git@xx.xx.xx.xx:lclc/lclctest.git (我這邊新建了一個lclc的組)

  建好以備用.

 4.進入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/passwd
   OR 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

意思是進行一些配置,而後進行install

  配置config:因爲3.2.2默認是配置好的,能夠不進行配置  

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.進行install

$ ./subgit install lclctest

  此步將鏈接svn,須要耗時一段時間.

  完成後就把svn代碼遷移到本地庫了,這時候就須要用git push到遠程庫中

6.clone版本  

 git clone ./lclctest lclctest.git

7.進入lclctest.git目錄  

git remote set-url origin git@yourip:lclc/lclctest.git(以前建立的git項目)
git push origin master

  在push的時候發現提示填寫密碼:  

 git@ip's password:

  此時說明須要進行身份驗證,咱們給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文件中的內容複製到Key的文本框裏.

再執行步驟7的git push origin master命令上傳master

8.上傳分支.

  進入lclctest.git目錄,使用命令查看分支  

git branch -a

結果:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/bugfix
  remotes/origin/develop
  remotes/origin/feature
  remotes/origin/master

本項目一共有3個分支,分別是bugfix,develop,feature,分別進行上傳

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

注意:冒號後面爲遠程庫中的地址,必須以refs/heads開頭.

9.上傳tags

git push --tags

 

 參考資料:

  http://lattecake.com/post/20051

  http://stackoverflow.com/questions/23251394/subgit-import-and-multiple-branches-directories

相關文章
相關標籤/搜索