版本控制之我見——版本控制心得(二)
對于一個采用版本控制進行軟件開發的多人開發團隊而言,其一般的開發方式是:采用服務器/客戶端的形式,在上面分別安裝版本控制工具的服務器和客戶端版本,軟件放在服務器上為大家所共享,開發人員在客戶端從服務器上將軟件的相關部分下載到本地,進行修改,改動結果最終提交到服務器上。
1、軟件版本控制的主要功能和主要特點
版本控制的功能:跟蹤記錄整個軟件的開發過程,包括軟件本身和相關文檔(所帶來的結果是:可標識不同階段的軟件及相關文檔,進行差別分析;對軟件進行可撤消的修改;便于匯總不同人員所做的修改),輔助協調和管理軟件開發團隊。
我認為,對于軟件的版本控制而言,其主要特點包括如下:
1.1 空間上集中統一管理
由于采用服務器/客戶端方式,盡管開發人員可以在自己的本地留有備份,但最終唯一有效的只有服務器端的那個原始拷貝。一定程度可以解決一致性問題、冗余問題。
1.2 時間上全程跟蹤記錄
工具將會自動記錄每個更改細節,和不同時期的不同版本。一定程度可以解決冗余問題、事務性問題、并發性問題。
1.3 操作權限控制
對于不同開發人員,對軟件的不同部分可以定義不同的訪問權限。一定程度可以解決安全性問題。
1.4 自動或半自動
由于有工具輔助控制,可以減輕開發人員的負擔,節省時間,同時降低人為錯誤。像軟件整合這樣的工作,其工作量可以相對減輕。
2、軟件版本控制評價標準
我認為,對軟件進行版本控制,衡量其效果的標準,歸根結底有兩點:效率和質量。如果版本控制最終使軟件開發效率得到提高、使軟件質量得到提升,那就是成功的,反之則是失敗的。效率的提高比較容易理解,質量的提升則體現在:軟件的一致性、冗余程度等。需要指出的是,單就版本控制工具本身并不能保證這兩點。對工具不熟悉或錯誤的使用,以及開發人員的不良習慣等都將導致失敗。有時可能反而降低效率。
3、幾個重要觀點
3.1 版本控制包括代碼和文檔
我認為,廣義的版本控制也應該包括和代碼相關的其他內容,主要指文檔。雖然文檔的一致性問題并不像代碼那么突出,多人同時修改一個文檔的情況一般較為少見,但將文檔只留一個服務器拷貝,會便于集中管理,減少冗余,加上工具的全程跟蹤記錄,可以隨時查看不同時期文檔的內容,相互比對。
3.2 版本控制管理應該包括工具軟件的使用和人為規范的遵循
在版本控制中,人的因素更為重要,規范的行為可以避免很多意想不到的后果,和錯誤使用工具所引起的問題。單純依賴工具,并不能取得良好效果。沒有版本控制的意識、對工具的使用不熟悉(一些功能不知道怎么用,一些功能使用錯誤)、人為的不良習慣,都可能導致錯誤。因此需要使用版本控制工具的開發人員具有自覺良好的意識和習慣,也需要一些相關的規范和制度的保證。
3.3 不能忽略版本控制管理員這一角色的重要性
可以不必單獨劃定一人來擔任這個角色,但如果沒有這一角色的存在,任何人都可以任意操作服務器上已納入版本控制的軟件以及版本控制工具的配置信息(比如用戶權限信息),或者說任何人都可以做管理員,則又會出現安全性問題。從某種程度上講,這和沒有版本控制下每臺機器上都有若干軟件版本的情況是等效的。
3.4 向版本控制過渡是一個循序漸進的、持久的過程
對于一個團隊而言,向版本控制過渡,需要有一個逐步轉變的過程。這包括:制訂一系列合理的循序漸進的措施,使版本控制的意識逐步得到大家的認可,使人員逐漸養成良好習慣(習慣于這種開發方式)。這是一個持久的過程,需要堅持。
相關鏈接: