最近看了很多 git 與 svn 的比較,很多都說 svn 做分支很慢,不知道是從何說起。有可能大家都不清楚,svn 做分支的正確步驟,特此介紹一下。
svn 伺服器後台使用 berkeley db 資料庫進行資料儲存。當前版本、發行版本、分支版本,在 svn 客戶端處中一般只是當成普通目錄。svn 客戶端有很多種,客戶端處資料如何儲存,沒有明確的說法。
比如,svn 版本庫從客戶端上看其根目錄為:
幾個主要子目錄為:
1)當前開發主線目錄
2)之前正式發行版目錄
3)之前或現在各分支版目錄
4)每日構建目錄
建立分支,或建立發行版,只是乙個目錄複製操作。由於svn伺服器端的資料是儲存在 berkeley db 資料庫裡,因此,目錄複製,在資料庫層面,只是儲存一條「在某個目錄下建立乙個子目錄,新的子目錄的內容,等同於另乙個目錄的那個版本」資訊。
那些認為 svn 複製分支,需要複製整個目錄裡所有檔案的人,或者說出「拉分支的時間較慢,因為拉分支相當於copy」之類話的,都可以從頭學習資料庫了。反正稍微熟悉一點資料庫的一些基本概念的技術人員,都不會設計出「分支要在伺服器上覆制整個目錄裡所有檔案」這麼個邏輯來。
以下是操作步驟舉例(使用的 svn 客戶端工具軟體是 tortoisesvn ):
之後選擇目錄複製的源頭、源頭目錄版本(可以不用最新版,最新版可能有人新加了乙個功能,還沒做完)、目的地目錄:
上述截圖中,將專案的主開發目錄 http://zhegui-svn/svn/trunk/zhegui_print_upload 對應版本 29423 ,複製到 http://zhegui-svn/svn/releases/zhegui_print_upload-v3.0,即完成了發行版本的伺服器上覆制功能。一般再大的專案,都是秒級完成。
實際的軟體專案開發中,只有以下目錄用得比較多:
1)當前開發主線目錄
以下目錄用得比較少:
2)之前正式發行版目錄
3)之前或現在各分支版目錄
4)每日構建目錄
這是因為,建立新發行版本,只是在 svn 伺服器上進行目錄複製,相當於只是在berkeley db 資料庫儲存一條「在某個目錄下建立乙個子目錄,新的子目錄的內容,等同於另乙個目錄的那個版本」資訊。
那把這句話儲存在乙個文字檔案中,也不費什麼事。
同理,每日構建目錄的存在意義,也不大。
另一方面,如果是軟體產品類開發,有多個不同客戶,可能分別進行 bug 修復,則仍有必要使用發行目錄:
2)之前正式發行版目錄
希望以上介紹,能幫助到大家。
OpenWrt的發行版
說起openwrt的版本問題,真的讓人又愛又恨。之前,我一直使用正在開發版本,只是知道有white russian 和kamliza這兩個版本,並沒有嘗試或者想過要編譯他們,我一直認為,正在開發的才是最新的,而且囊括了所有的。這是乙個致命的誤區。今天在尋找ar9341的晶元的產品的過程中,編譯發現一...
Linux的發行版
談到linux的發行版本,太多了,可能誰也不能給出乙個準確的數字,但是有一點是可以肯定的,linux正在變得越來越流行。面對這麼多的linux發行版,打算從其他系統轉到linux系統來的初學者可能會感到困惑,即便是忠實的 linux 使用者也沒有時間和精力去挨個嘗試,因此初學者在學習linux之前,...
linux發行版選擇
應用的環境和背景第乙個特點決定了這個發行版本不能太複雜,複雜到日常的應用的維護都要花費大量的時間 也不能太簡單,簡單到丟了linux的特點,讓人得出 這跟 windows差不多嘛 學生的水平良莠不齊,大多數從是由於興趣從windows下冒冒失失的跑到linux陣營裡來,相當一部分的人不新鮮味嚐過之 ...