2017年5月5日 星期五

使用SmartGit整合Subversion中央版本庫與Git本地端操作

由於我們公司使用的Subversion版本庫實在太多、太大,一直以來雖然想推動轉換到Git,但始終囿於轉換成本與學習成本而寸步難行,後來終於找到了另一個變通方案使能順利過渡。亦即初期中央版本庫仍為原有的Subversion版本庫,但client則切換為Git,使用的輔助工具則是SmartGit

SmartGit在今年初突然由8跳到17,原來版本編號改用西元年了,目前最新的版本是17.0.3。SmartGit的Clone可以選擇Git或SVN,只要選用SVN就能把Subversion版本庫複製到本地端了。

smartgit clone

雖然Git有內建Git-svn指令,也能複製Subversion版本庫,但速度不甚理想,SmartGit則採用三階段的下載處理,能較快讓我們能開始工作:

  1. SmartGit先把最後的版本複製下來,即HEAD所指的版本。
  2. HEAD版本下載後我們就能先開始作業了,其他版本會切換到背景繼續複製。
  3. 全部下載完成後執行最後的Join Subversion處理。

Subversion的資訊會被存放在 .git/svn 資料夾裡,完整的設定檔是 .git/svn/.svngit/svngitkit.config,內容範例如下:

[svn-git-remote "svn"]
    url = http://SVN網址
    fetch = :refs/remotes/git-svn
[misc]
    program-creation-version = 17.1 preview 7-1493049600000
[core]
    processExternals = true
    processIgnores = true
    processEols = true
    processTags = true
    processOtherProperties = true
    gitSvnAttributesThreshold = 32
[branch "master"]
    tracks = refs/remotes/git-svn
    remote = svn
[svn-remote-settings "svn"]
    minimalRevision = 0`

Git的master分支的Tracked branch為git-svn,即SVN的版本庫網址,屆時就能跟操作Git遠端版本庫一樣用Psuh、Pull或SmartGit的Sync了。

當使用Git的各項操作都熟悉後,就能再加入Git的remote版本庫,最終完整切換到純Git的環境了。

##

您可能也會有興趣的類似文章



from 簡睿隨筆 http://jdev.tw/blog/4984/using-smartgit-integrates-subversion-and-git-operations

沒有留言:

張貼留言