該文是svn源代碼分析系列文章服務端架構中的一篇,主要描述svn服務端版本庫數據存儲目錄結構,並且對這些文件以及目錄的作用進行簡單分析。使用“svnmadin create”命令創建初始化版本庫后,使用“tree”命令打印出沒有經過任何修改的原始版本庫目錄。
其中revs下面是以目錄組織的版本結構,每1000個版本組成一個目錄,每個版本自成一個文件,文件名即為commit后生成的版本號;即使刪除掉部分版本也不會影響版本庫的讀取和顯示;但是基礎版本丟失會使版本庫無法訪問;
$ svnadmin /svnrepos/morepos $ tree /svnrepos/morepos -p morepos |-- [-rw-r--r--] README.txt |-- [drwxr-xr-x] conf | |-- [-rw-r--r--] authz | |-- [-rw-r--r--] passwd | `-- [-rw-r--r--] svnserve.conf |-- [drwxr-sr-x] db | |-- [-rw-r--r--] current | |-- [-r--r--r--] format | |-- [-rw-r--r--] fs-type | |-- [-rw-r--r--] fsfs.conf | |-- [-rw-r--r--] min-unpacked-rev | |-- [drwxr-sr-x] revprops | | `-- [drwxr-sr-x] 0 | | `-- [-r--r--r--] 0 | |-- [drwxr-sr-x] revs | | `-- [drwxr-sr-x] 0 | | `-- [-r--r--r--] 0 | |-- [drwxr-sr-x] transactions | |-- [-rw-r--r--] txn-current | |-- [-rw-r--r--] txn-current-lock | |-- [drwxr-sr-x] txn-protorevs | |-- [-rw-r--r--] uuid | `-- [-rw-r--r--] write-lock |-- [-r--r--r--] format |-- [drwxr-xr-x] hooks | |-- [-rw-r--r--] post-commit.tmpl | |-- [-rw-r--r--] post-lock.tmpl | |-- [-rw-r--r--] post-revprop-change.tmpl | |-- [-rw-r--r--] post-unlock.tmpl | |-- [-rw-r--r--] pre-commit.tmpl | |-- [-rw-r--r--] pre-lock.tmpl | |-- [-rw-r--r--] pre-revprop-change.tmpl | |-- [-rw-r--r--] pre-unlock.tmpl | `-- [-rw-r--r--] start-commit.tmpl `-- [drwxr-xr-x] locks |-- [-rw-r--r--] db-logs.lock `-- [-rw-r--r--] db.lock 10 directories, 27 files
路徑 | 類型 | 作用 |
conf | 目錄 | 存放版本庫所用配置文件的目錄 |
dav | 目錄 | 供mod_dav_svn使用 |
db | 目錄 | 版本數據存儲目錄 |
db/fs-type | 文件 | 版本庫數據真實存儲格式,SVN有fsfs和bdb兩種存儲格式 |
db/revprops | 目錄 | 記錄版本屬性 |
db/revs | 目錄 | 版本庫數據存儲真實目錄 |
db/uuid | 文件 | 存儲版本庫唯一標識號,參考《svn版本庫標識uuid簡述》 |
db/txn-current | 文件 | 記錄當前事務 |
format | 文件 | 存儲一個整數的文件,此整數代表庫層次結構版本 |
hooks | 目錄 | 存放版本庫勾子目錄 |
locks | 目錄 | 存儲庫鎖目錄,用來跟蹤庫的訪問者 |