這邊要來介紹的是 git 在 svn 上面的一個過渡應用(git-svn),以及在 git 和 svn 之間的比較:
首先說明,這個應用方式的好處在於:
1. 保留 svn 的優點, svn 有一堆 properties 給我用的很高興,像 keywords 、很簡單就可以設定好的 ignore list 、 executable 、 permission、 ownership -> 所以 repo 用的是 svn 。
2. 比 svk 快。 (svk transaction 式的通訊方式,做到一半掛點會從頭再來過,如果這個 commit 一次是上 Giga 的量,掛點時,我想你會很想哭,因為記憶體也吃很多, performance 還是一樣的爛。 Git 就好多了。)
3. 分散式的 repo ,所以你可以在 local commit 了,測試完成,才 "merge" 到 server 上面。(merge 是用 svk/svn 的用詞)
用法介紹:
在開始動作之前,我們先來搞個小動作,寫一些東西到 $HOME/.gitconfig
[user]
name = Anton Yu
email = xxxx@gmail.com
[color]
diff = auto
status = auto
branch = auto
[alias]
st = status
rb = svn rebase
ci = commit -a
co = checkout
這些東西包括了 alias, 個人的 email 還有 git 的 colordiff 等等設定。
$ mkdir gtalkbot
先找個地方來放 code再找出 svn url 來,像是
https://gtalkbot.googlecode.com/svn/trunk/
執行:
$ git-svn init https://gtalkbot.googlecode.com/svn/trunk/ gtalkbot/
$ git-svn fetch
做完你就會發現你已經有一個 .git 的目錄在這裡了,不過跟 svn 不一樣的是,它並沒有每個子目錄都放 .git ,只有這個 root dir 放了一個 .git 而已,所以你可以很輕鬆的做到 (export) 的動作,而不需要特別的指令。
更新時,請下 git rb (就會自動執行 git svn rebase)
刪除檔案,請下 git-rm $file
新增檔案,請下 git-add $file
commit ,請下 git-svn ci
commit 到 svn 底下,請下 git-svn dcommit
不過 props 在 git 底下連 "svn:executable" 都失效。 所以不建議 svn 的使用者在沒有考慮周祥之前就轉移過來這個 SCM 管理平台。畢竟它的軟體生命才剛開始而已。
--
參考指令列表:
* 指令列表
* SVN 與 git 對照表
沒有留言:
張貼留言