由於我們公司使用的Subversion版本庫實在太多、太大,一直以來雖然想推動轉換到Git,但始終囿於轉換成本與學習成本而寸步難行,後來終於找到了另一個變通方案使能順利過渡。亦即初期中央版本庫仍為原有的Subversion版本庫,但client則切換為Git,使用的輔助工具則是SmartGit。
SmartGit在今年初突然由8跳到17,原來版本編號改用西元年了,目前最新的版本是17.0.3。SmartGit的Clone可以選擇Git或SVN,只要選用SVN就能把Subversion版本庫複製到本地端了。
雖然Git有內建Git-svn指令,也能複製Subversion版本庫,但速度不甚理想,SmartGit則採用三階段的下載處理,能較快讓我們能開始工作:
- SmartGit先把最後的版本複製下來,即HEAD所指的版本。
- HEAD版本下載後我們就能先開始作業了,其他版本會切換到背景繼續複製。
- 全部下載完成後執行最後的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的環境了。
##
您可能也會有興趣的類似文章
- Subversion版本庫匯入Git的步驟與SVN整合步驟 (0則留言, 2014/10/03)
- Git的Staging Area的中文翻譯探討 (2則留言, 2014/09/12)
- 建立測試環境以git rebase -i變更Commit歷史 (0則留言, 2014/10/08)
- 撰寫git info工具以模擬svn info功能 (0則留言, 2014/09/01)
- 為何無法正確執行git reset --hard HEAD^ (0則留言, 2014/09/20)
- 將Git分支名稱加到提示字元(Prompt)裡 (0則留言, 2014/09/02)
- Linus談Git與TortoiseGit (0則留言, 2008/12/19)
- 由Subversion檔案庫匯出特定專案的內容 (0則留言, 2005/12/25)
- 使用IntelliJ IDEA快速設定svn:keywords的方法 (0則留言, 2014/04/04)
- Subversion權限設定範例說明 (0則留言, 2009/09/09)
- [NetBeans] 安裝與設定NetBeans內的Subversion (0則留言, 2006/01/21)
- [SVN] JavaSVN改名並推出新版本 (0則留言, 2006/11/16)
- 幾篇值得注意的Subversion相關文章 (0則留言, 2008/08/10)
- 取出Subversion檔案庫裡被刪除的檔案的步驟 (2則留言, 2006/08/26)
- TortoiseSVN: 解決TSVNCache佔用CPU過高的設定 (0則留言, 2007/08/21)