古い形式の例
repos
└─db
│
├─revprops
│ ├─0
│ ├─1
│ │ ... (中略) ...
│ ├─1005
│ ├─1006
│ └─1007
│
├─revs
│ ├─0
│ ├─1
│ │ ... (中略) ...
│ ├─1005
│ ├─1006
│ └─1007
│
└─transactions
新しい形式の例
repos
└─db
│
├─revprops
│ ├─0
│ │ ├─0
│ │ ├─1
│ │ │ ... (中略) ...
│ │ ├─998
│ │ └─999
│ │
│ └─1
│ ├─1000
│ ├─1001
│ │ ... (中略) ...
│ ├─1006
│ └─1007
│
├─revs
│ ├─0
│ │ ├─0
│ │ ├─1
│ │ │ ... (中略) ...
│ │ ├─998
│ │ └─999
│ │
│ └─1
│ ├─1000
│ ├─1001
│ │ ... (中略) ...
│ ├─1006
│ └─1007
│
└─transactions
r24576 以降のバージョンの svnadmin コマンドには --pre-1.5-compatible オプションが追加されています。
D:\...\svnroot>svnadmin create repos参考
D:\...\trunk>svnadmin help create
create: 使用方法: svnadmin create <リポジトリパス>
空のリポジトリを <リポジトリパス> に新規に作成します。
有効なオプション:
--bdb-txn-nosync : トランザクションコミット時の fsync を無効にしま
す [Berkeley DB]
--bdb-log-keep : ログファイルの自動削除を無効にします [Berkeley
DB]
--config-dir : ディレクトリ からユーザ設定ファイルを読み
込みます
--fs-type : リポジトリ形式: 'fsfs' (デフォルト) または 'bdb'
--pre-1.4-compatible : Subversion バージョン 1.4 以前と互換性のある形式
を使用します
--pre-1.5-compatible : use format compatible with Subversion versions
earlier than 1.5 ← ver1.4 互換モードを使う場合
svnadmin create のオプションの意味(r24576 以降)
if( --pre-1.4-compatible )
format 1 ← 〜 ver 1.3 形式
else if( --pre-1.5-compatible )
format 2 ← ver 1.4 形式
else
format 3 ← ver 1.5 形式
svnadmin create のオプションの意味(r24575 以前)
if( --pre-1.4-compatible )
format 1 ← 〜 ver 1.3 形式
else
format 2 ← ver 1.4 形式
互換性
svnadmin dump originalrepos > repos.dump
svnadmin create newrepos
svnadmin load newrepos < repos.dump
r24693 (2007/4/21) 現在ではまだ完成していないようです。
実行してみると、意図的に例外が発生するようになっています。
実運用には使うなという警告メッセージが出ます。
(例外が発生する部分をコメントアウトして使います)
C:\tmp>D:\svnwork\subversion\trunk\tools\server-side\fsfs-reshard.py Traceback (most recent call last): File "D:\svnwork\subversion\trunk\tools\server-side\fsfs-reshard.py", line 354, infsfs-reshard.py では、以下の処理を行います。Trust us.""" Exception: This script is unfinished and not ready to be used on live data. Trust us.
C:\tmp>fsfs-reshard.py usage: fsfs-reshard.py REPOS_PATH MAX_FILES_PER_SHARD Perform an offline conversion of an FSFS repository between linear (readable by Subversion 1.4 or later) and sharded (readable by Subversion 1.5 or later) layouts. The MAX_FILES_PER_SHARD argument specifies the maximum number of files that will be stored in each shard (directory), or zero to specify a linear layout. Subversion 1.5 uses a default value of 1000 files per shard.実行例
C:\tmp>D:\svnwork\subversion\trunk\tools\server-side\fsfs-reshard.py tmprepos 10 Converting 'tmprepos' to a sharded structure with 10 files per directory (will convert to a linear structure first) - marking the repository as invalid - linearising db/revs - linearising db/revprops - sharding db/revs - sharding db/revprops - marking the repository as a valid sharded repository - done.