古い形式の例
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.