部門版本管理工具的變遷!

        最近給部門搭建了SVN+Apache的版本管理系統,先前使用VSS進行源碼的管理,比較簡單,新員工上手也很容易,但是在後期的版本管理上由於功能不足就導致了版本的混亂,因此迫切需要更好的工具來彌補現在存在的問題。
        搭建CVS的系統
        使用CVSNT+WinCVS,但是經過一段時間考驗發現CVS並不適合我們部門的開發模式,主要有以下原因:
1、每個人的修改都可能會導致整個版本出問題,因此爲了便於調查版本問題強調每個人都在上傳版本後進行Tag。鑑於CVS只能對文件進行管理,因此Tag操作實際上是對每個文件進行Tag標記,由於整個版本在2G多,這樣就導致了Tag操作緩慢而且很容易由於同步操作,某個文件被鎖而導致Tag操作中斷,這樣Tag也沒有真正的起到作用。
2、CVS的Checkout一個新的版本速度太慢。
3、由於先前VSS的Update將會覆蓋本地修改,而CVS則不會,這樣就需要大家對CVSUpdate後的文件進行確認(尤其衝突),而大家處理衝突意識淡薄,遇到衝突總是手忙腳亂。
4、CVS對文本文件的處理不盡如人意,在對.def文件的合併上就是比較差。
       使用新工具是爲了對工作更有幫助,而不是增添負擔,因此聽了段時間抱怨,開始尋求更好的工具。
        SVN+Apache的搭建
        開始就想搭建SVN,最終搭建CVS是因爲網上形形色色的都是使用CVS來管理,當然嘗試一下也讓我瞭解了我們部門的源碼管理上需求,來搭建出是大家使用更加舒服、簡單、實用的工具。
        使用SVN解決了在CVS上Tag太慢的問題,由於Commit一次SVN就會將版本庫大版本號升級一次,也直接滿足了我們要求每次上必須Tag的需求。
        SVN具有完美的回滾操作,先前Tag被中斷後,先前的文件已經被標記而中斷後以後的文件則沒有這個Tag,而SVN卻必須每次操作都必須完全完成纔會真正Commit到數據庫,中途Error則會完全的被執行回滾。這也是SVN採用數據庫來進行存貯的優勢。
        SVN的Checkout版本的速度比起VSS要遜色一些,而比起CVS來要好一些。
       目前使用SVN存在的問題
       從SVN版本庫Checkout下來的版本每個文件除了Work Copy外還有自己的一份Base Copy,由於版本庫原先爲2個G,這樣就導致了Checkout下來的文件夾大小爲4個多G,編譯完成後就變成了近6個G,太佔用硬盤了,使得原本不大的硬盤就更加緊張。
        當然這個功能在我前段時候出差的時候發現也是有很大的作用,當我改動某些文件而且忘記了都改了那些地方時,這樣的功能可能通過Diff一下Base Copy,使得我對整個版本的修改一目瞭然。
        經歷了VSS->CVS->SVN系統的轉變,對版本管理理解的同時讓我也逐漸的開始考慮項目的管理,受益不淺,下篇寫一下Trac與項目管理結合的思考。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章