close
文章出處

06年進公司的時候,我們沒有使用版本控制系統,所有代碼都在部門經理的電腦上放著,誰要改什么代碼就過去要一份最新的,改好之后再放回去,感覺好原始。據說之前是用過一段時間微軟的vss(visual.source.forge),曾經也搭建過vss服務器,但是中間不知道什么原因中斷了,也就沒有繼續堅持了,可能是當時人還少,整個軟件研發也就是10個人左右。所以沒有使用版本控制也沒有出什么大問題。

進公司之前,由于在matin fowler的《重構》中有提到版本控制系統,我就在自己電腦上搭建一個cvs服務器玩,完成一個小功能就提交一次,寫好log,寫錯了再撤銷回來,切實感覺到了有版本控制系統的好處,他就像是一個時光機器,可以讓我回到之前的任何一個時間點。我再也不用不斷的使用winrar壓縮來做備份了。

所以在進公司半年,在摸清了部門的運轉機制之后,就向領導提出提出希望可以引入版本控制系統。然后領導就同意了(沒想到這么順利),然后就是版本控制系統的選擇問題,比如是繼續使用當年的vss,還是尋找開源替代品,比如cvs或者其他的什么,現在已經不記得當年是如何選擇的,不過我自己在使用cvs的時候確實是有一些不愉快的經歷,庫文件損壞。最終選擇了svn,那會svn已經出來五年多了(2007),已經是比較穩定了,而且除了命令行,已經有各種插件/圖形化工具可以使用。比如我們就使用visutal svn來搭建服務器,而使用tortoiseSVN來做客戶端,然后再使用Visual SVN提供的vs的插件來解決和vs集成的問題,基本上整個流程就跑通了。然后就是組織培訓,在組織內宣貫,這樣前后大概過了一個季度,才陸續的將以前的代碼遷移到svn服務器上。

在搭建服務器的過程中,一個比較明知的決定就是使用與服務器來同一用戶管理,這樣就可以同一svn和ftp兩套系統的用戶管理。visualSVN本身不支持域用戶,所以需要另外搞個插件來做域用戶與svn用戶的映射,具體是什么有點不記得了。

這樣服務器跑起來之后,穩定使用了三年多,隨著公司的擴張,部門的人越來越多,新項目也越來越多,這時候問題就出來了,由于代碼權限的問題,之前一直都是由部門經歷兼職做配置管理員,由他負責svn的項目庫創建,權限的分配等,現在有八九十號人的權限需要管理,差不多每天都有人需要申請svn的權限:創建項目庫/分配老代碼的讀權限/寫權限,等等。這樣會占用他較多的時間,讓一個部門經理來配置管理員的工作確實是有點浪費。

這個問題的核心在于svn不支持分級授權:比如如果給一個目錄或者庫指定了一個管理員,然后就可以由這個管理員來管理該庫下面的所有目錄的權限。

如果能夠支持分級授權,那么部門經理的管理工作就會少很多,他只要負責創建庫,然后分配管理員,其他的事情都可以由管理員來完成,這樣就會比較理想。所以我們就開始重新尋找新的替代品。最終選擇的是微軟的TFS。之所以選擇TFS一方面也是因為我們原來的那個bug管理系統不好用,也迫切希望能有一個新的替代品,而TFS是一個一體化的解決方案,可以在上面做版本控制,登記缺陷,做項目計劃,發布會議通知,組織評審等,而且每個項目還可以有的門戶。確實功能比較強大,然后,剛好他的版本控制系統有分級授權的功能。這就圓滿了。

當然,搭建tfs服務器是一個比較麻煩的事情,這點去網上找相關文章吧,這里就不細說了,總之用微軟一般就用全套,從他的服務器到數據庫服務器到sharepoint到tfs服務器。

切換過去這兩三年使用起來也還算平穩,沒出什么大亂子。

另外提一下,不管是svn還是tfs,這種集中式的版本控制系統有一個問題,服務器如果掛了,大家就沒法工作了,特別是我們是公司是兩個中心模式,兩個研發中心通過vpn相連,如果偶爾網絡不好,那么另外一個研發中心的同事基本上就很多事都干不成了。這種問題對于中央式倉庫沒有什么很好的方法。而且目前網絡中斷的情況沒有經常發生,所以也就沒有成為內部主要矛盾。


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()