關於版本管理的一些初步理解

今天和袁威又聊了好一會,感覺受益匪淺。我主要和他聊到了項目前端的版本管理方面的問題。其實在用svn之前,我並沒有花很多精力關注版本管理這一塊,可等項目慢慢大起來,我發現版本管理是變得越來越重要了。

袁威的版本管理方法在他看來是不科學的,確實也是,但是比我的科學多了。


如圖,袁在每個css和js後面都加上了版本號,這樣做的好處就是看起來一目瞭然,知道當前所用版本。

但是,有一個弊端,當我修改其中某一個css或js後,我必定要更新其版本號,爲了統一,我必須更新所有的css和js版本號。這樣除了麻煩,還有一個問題就是關於瀏覽器緩存。每次我修改版本號之後,瀏覽器都會認爲這是一個新的css或js文件,那麼它會重新加載該全部css或js,而不是調用原來已經存好的css和js,這樣就會造成資源的浪費。因爲我只修改了其中一個文件,卻要把所有文件全部重新reload。

有效的解決辦法就是利用百度的fis前端解決方案,其中利用到了md5版本號轉換。將所有的css和js文件通過md5進行轉換得到一個固定版本號,當我只修改其中一個css或js時,只有對應的文件的版本號換了,那麼我在引入處只需將修改的css和js的版本號更換即可。

這樣,在md5之前,版本號依舊是統一的,但是經過md5轉換之後,只有修改了的文件其轉譯版本號纔會修改。這遍免去了一定的問題。

另外說說我這邊,我現在的項目分爲三個版本,前端靜態頁面版本、本地服務器開發版本(svn)、遠程服務器訪問版本。靜態頁面版本基本已經被廢棄了,因爲自從將靜態頁面開發好,我便將其部署到svn中繼續開發,之後做了很多次修改,都沒有再在靜態頁面版本中進行,直接在svn版本中進行。可是這時候問題就來了,在svn中訪問頁面時,必須經過controller,但是有時候我只想試一些簡單的效果(比如引入top.html和footer.html),那麼我還得在controller寫一個方法,相當麻煩。所以我只能迴歸靜態頁面版本,在靜態頁面中把效果寫好了,纔將其引入svn版本。

另外,在後端開發中,版本管理並不像前端版本管理那麼麻煩。一開始,我學習的是很簡單的版本管理辦法,如圖:


版本迭代以0.1開始,每一個整數算是一個大版本,在0.1之類的小版本之間要做版本迭代,只需以0.1.1開始,如圖中所示的1.9.1。

後來,我學到了一個更科學一點的版本管理方法,該科學主要體現在編號上,如圖:


在編號上,所有的版本後面都留有兩位做中間插入版本,比如圖中1710。

在版本管理上,我覺得我瞭解還有很多欠缺,要在這方面多多關注下。

————於2015年4月30日


昨晚逛知乎的時候突然看到一篇特別詳細的關於版本管理及前端部署開發的回答,感覺受益匪淺,終於明白了很多之前沒有搞清楚的問題。

比如前面袁威一直和我說的版本管理問題,我真心沒多大體會,因爲我做的項目在版本管理方面並沒有太多的要求。

看了知乎上的回答才知道,當項目越來越大,版本管理的必要性才真正能夠體現。

此處將該篇知乎貼出來,真的是一篇好文章啊!

http://www.zhihu.com/question/20790576/answer/32602154

————於2015年6月22日

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章