//版本控制軟件目前很多,而流行的是 CVS 和 SVN,SVN 是后起之秀,有取代 CVS 的趨勢。
//版本控制的錯誤意識之一:一個人的微型軟件作坊,用不上版本控制軟件。
解釋:版本控制的概念自然是繞不過去的,而版本控制軟件完全可以不用。但是:1,版本控制軟件一個人是完全可以用的,不是非得在團隊開發時才想起它;2,即使是一個人開發軟件,使用版本控制軟件來管理代碼,也會帶來很大的益處。
//版本控制的錯誤意識之二:版本控制系統只能建構在獨立的一台機器上。
解釋:目前流行的 CVS 和 SVN 版本管理系統,的確主要應用在 C/S 模式下,但並不是不能用瀏覽器來管理,例如 SVN 就可以通過 Webdav 協議來遠程管理 www 服務方式的 SVN,更可以通過瀏覽器直接瀏覽版本庫里的內容。
但是,即使是這樣,也不是說,版本控制系統必須/一定/只能建構在獨立的一台機器上。實際上:
1,版本控制庫完全可以建立在自己的機器上(本地版本庫),然后自己用。
2,建立版本控制系統,也不是必須使用專門的 SVN Server 軟件,現在的“烏龜SVN客戶端”既可以作為客戶端與 SVN Server(例如 VisualSVN Server)配合,它自己也可以提供服務,從而建立一個完全功能的、本地管理的版本控制系統。
//版本控制的錯誤意識之三:有了版本控制軟件,就不會出現版本問題。
解釋:絕對不是!正是因為版本控制問題太復雜了,才引入版本控制軟件來輔助管理。注意,我這里說的是“輔助”!因為人永遠是軟件開發和管理這種生產活動中最重要和最具能動性的因素,軟件永遠都是人的奴才和工具。
注意版本管理軟件能且只能管理和協調文本級別的代碼問題,例如沖突、合並、更新等等,糾正程序邏輯錯誤根本不是它的事情!這意味着,即使團隊里所有人和“SVN”都認可你寫的代碼,但這些代碼導出后發行到客戶手里,也不見得是可用的。
//版本控制的錯誤意識之四:有了版本控制軟件,軟件團隊里的程序員就不用花時間交流了。
解釋:錯!版本控制軟件永遠代替不了交流,況且交流往往是邏輯和業務層面的,這些事情版本管理軟件根本無能為力。事實上,即使在版本控制系統的管理下,程序員也需要在部分代碼修改后,盡量想法通知別的程序員,而不是全部依賴版本控制系統的日志,這樣將減少解決代碼文本沖突的機會。解決版本沖突是版本控制系統最重要和復雜的功能之一,它能輔助我們解決問題,但最終解決問題的是人,而這需要時間和人的溝通,也就是說,需要耗費成本。
//版本控制的伎倆之一:並不是工程中所有的文件都必須和需要納入版本控制中。那些不需要程序員控制和管理的軟件測試中的數據文件等等,數量很大,字節數也很大,納入版本控制系統中,沒必要,也不允許。
//小知識之一:為什么使用版本管理軟件
1,你是否在一個團隊中工作?
2,是否發生過這樣的情況: 當你在修改一個文件時,其他人也在修改這個文件?而你是否因此丟失過自己所作的修改呢?
3,是否曾經保存完一個修改,然后又想把個文件恢復到修改以前的狀態?是否曾經希望能夠看到一個文件以前某個時間點的狀態?
4,是否曾經在項目中發現了一個 BUG,然后想調查它是什么時候產生的?
如果以上問題中的任何一個回答“是”的話,那么就有必要使用版本管理軟件了。
//小知識之二:有人說:SVN 管理客戶端就是 Tortoise SVN 軟件,是不是?
這話偏了。說“烏龜SVN客戶端是SVN管理客戶端”是對的,反推回來的結論是不對的,因為 SVN 管理客戶端很多,“烏龜”只是很流行的一種(當然很優秀了)。實際上,如果有必要和可能,你也可以開發一個你自己的 SVN 客戶端來,問題是:有必要嗎?你能嗎?
來自“網眼視界”:http://blog.why100000.com
“十萬個為什么”電腦學習網:http://www.why100000.com