2009年9月14日 星期一

git初步心得

最近了點時間一邊讀doc一邊操作終於比較了解git一點了。git這種分散式的版本控制系統果然是為社群開發方式的研發出來了。使用方式和邏輯很適合社群的開發模式。不過還真的不怎麼容易學。我自信對傳統集中式的版本控制己相當了解,也使用好多年,但還讀git的manual時還是常有一頭霧水的感覺。也許和我一直想用subversion而增加自己的困擾有關吧。

比較了解git一點後,覺得git比較像是版本的管理而不是版本的控制。當然這也是git對分散式版本控制系統的看法,應該是"檔案工具"而不是"控制工具"。所以要你手動作pack object、連提交過的版本都可以從歷史記錄裡抹除。-_-|||。這在社群使用上沒問題,但是公司團隊裡可能就會不一定合適了。當然這對git來說並不是無解。可以另外由一個管理者保有一份類似"權威版"的的方式來模擬像subversion這種集中式的管理方式。

不過git鼓勵多使用branch和merge的方式倒是滿好用的。當local branch不會影響任何人時,開發者更能盡情的做各種實驗,這當然也是受社群開發方式的影響,這種開發心態在一般的公司團隊裡也很有幫助。

就目前的試用心得來說覺得git有兩個部分還是不太習慣。

第一是使用hash當版本號碼讓版本號碼非常長,大部分的狀況下我都不看版本號碼而看commit log。也因為這樣的版本號碼不容易一眼就看出版本之間的前後關係。在一個開發速定穩定的團隊裡我甚至可以從號碼的差距猜出大約的時間差距。有時間一眼就看出前後關係還是很方便的。

另一個問題是和bug tracing system或ticket system的配合。因為大部分的bug tracing system都還是集中式的要和分散式的version control合作還是有些問題。我還沒試過,我想可能會有一些solution。但應該都還不完美。至少我看到我最愛的mantis好像有一些git的hooking,試過之後再說。

沒有留言: