客戶端svn上傳後,原始檔案在伺服器的什麼位置?

bingguang1993發表於2018-06-23


原作者:寅春樹

來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。



SVN伺服器端不是簡單將上傳的檔案一個一個存放起來的;
SVN伺服器端預設採用的FSFS格式是將每次commit的內容增量方式存放的,每個增量包存成1個檔案,這個增量包中包括了這次commit的全部資料。
也就是說你不可能在伺服器端存放該版本庫的資料夾下找到你上傳的某個檔案。

SVN伺服器版本庫有兩種格式,

一種為FSFS,

一種為BDB

把檔案上傳到SVN版本庫後,上傳的檔案不再以檔案原來的格式儲存,而是被svn以它自定義的格式壓縮成版本庫資料,存放在版本庫中。

如果是FSFS格式,這些資料存放在版本庫的db目錄中,裡面的revs和revprops分別存放著每次提交的差異資料和日誌等資訊 。


怎把指定資料夾上傳到SVN伺服器?
一般來說新建專案是在伺服器端操作的,每個專案作為一個獨立的版本庫進行管理。
當然你可以可以把這個專案當作伺服器上某個版本庫下面的一個資料夾進行管理,但是會導致這個專案的版本號看起來是不連續的,因為SVN是用版本號標註整個版本庫的狀態。
你如果確定想把這個專案當成某個版本庫的一個資料夾進行管理的話,那麼就這麼做:
首先,用TSVN檢出那個版本庫到本地;
然後,將這個專案複製到本地這個版本庫的某個資料夾下面;
最後,用TSVN增加並提交這個資料夾。

SVN在伺服器端的儲存方式和客戶端是不一樣的,所以在伺服器端是看不到原始檔的。伺服器端有兩種儲存方式FSFS和BDB,目前預設都是FSFS。

要匯入檔案有兩種做法:
1、用import指令,將客戶端資料夾匯入到伺服器端
2、先checkout空庫到客戶端,然後將要匯入的資料夾放入客戶端checkout產生的空資料夾,然後執行add將這些資料夾納入SVN控制,最後執行commit上傳到伺服器

相關文章