SVN的資料夾連結太強大了!(目錄連結,目錄對映,svn:externals)

工程師WWW發表於2014-05-07
問題:
    我們的專案裡,伺服器指令碼工程svn地址為:svn://server/script;配置檔案地址為:svn://server/cfg。都是獨立的倉庫。有一天,對外發布人員覺得每次都Update兩次很煩,說能否把類似這種目錄都放在一個倉庫裡,只需要Update一次就可以了。
    是否所有資源、程式碼都用一個倉庫就ok了呢?千萬不要這麼做,因為
    svn的效率很低!
 
 svn在管理程式碼這種文字檔案(而且相比美術資源體積不大,檔案不算多)的時候,下載、上傳、查上傳log速度還是可以接受的。我們已經做了多年的倉庫依然能應付過來。
    但是管理二進位制檔案的時候,速度實在是慢的令人髮指,角色、場景這種容量、檔案數比較誇張的目錄,完全下載一次甚至可以用掉4個小時。隨著時間流逝,歷史記錄越來越長,下載速度就越來越難以容忍了。

解決方案:
  
 把不同種類的資源放在不同的倉庫裡,具體怎麼放可以由有經驗的資源管理人員安排。然後,建立一個資源主幹倉庫。裡面用資料夾連結的形式,存放各種資源。

    資源管理員一旦設定好svn:externals屬性之後,對使用者來說,上傳、下載都沒有區別,就好像資料夾真的在主幹倉庫裡一樣。
    等過了一段時間,例如半年,某一種資源太多需要清理的時候。管理員把現有資源乾淨的拷貝出來到新倉庫(或者新目錄),例如cha目錄下所有檔案拷貝到cha2目錄,只要最後的結果檔案不要svn資訊。然後修改svn資料夾連結的地址。
    修改好後,使用者直接使用就ok了。達到了不影響其他人員的同時優化svn速度的目的。

    (僅試驗過,還沒有在專案裡實用,最後一步使用者更新時可能會有衝突)


TortoiseSVN操作方法:右鍵->TortoiseSvn Properties->如下圖編輯

SVN的資料夾連結太強大了!(目錄連結,目錄對映,svn:externals)

如:

^/mobilegame/trunk/etc/config/proto      proto
^/mobilegame/trunk/etc/config/proto_lua     proto_lua
^/mobilegame/trunk/etc/lua/common/consts consts

相關文章