*svnadmin [#s20a20c2]
#contents
** svnadmin とは? [#j34be9ef]
公式に配布されているsubversionに含まれた保守ツールの一つ。~
このツールはリポジトリに対してさまざまな保守操作をします。~
(リポジトリの作成、ダンプ、ダンプのロード、コピーなど)
**svnadmin サブコマンド [#i1b91d84]
-良く使用すると思われるコマンドのみ、詳細に記述しました。
***create [#v71c6a84]
-''用法''
 svnadmin create REPOS_PATH
-''説明''
--指定したパスに新規に空のリポジトリを作ります。パスが存在しなければ自動的に作られます。
-''スイッチ''
 --bdb-txn-nosync
 --bdb-log-keep
 --config-dir DIR
 --fs-type TYPE
-''例''
--新しくリポジトリを作るには単に以下のようにします:
 $ svnadmin create /usr/local/svn/repos

***deltify [#c4732345]
-リビジョン範囲を指定して実行すると、それらのリビジョンで変更されたパス上で祖先の差分を計算します。リビジョンが指定されなければこのコマンドは単に HEAD リビジョンの差分を計算します。 

***dump [#s4f9f4d8]
-''用法''
 svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
-''説明''
--ファイルシステムの内容を「dumpfile」可搬可能形式でダンプし、進行状況を標準出力に表示します。リビジョン LOWER から、 UPPERまでをダンプします。リビジョンが指定されなければすべてのリビジョンツリーをダンプします。 LOWERだけが指定された場合は一つのリビジョンツリーのみダンプします。
--デフォルトでは、Subversion ダンプファイルの内容は以下のようになります。
+++まず要求されたリビジョン範囲の最初のリビジョンの内容が出力されます。
ここにはそのリビジョンに含まれるすべてのファイルとディレクトリが、
すべて一度にリポジトリに追加されたかのような形式になります。
+++その後に、(要求されたリビジョン範囲内の)引き続くすべてのリビジョンの内容が続きます。
ここにはそれぞれのリビジョンで修正されたファイルとディレクトリの情報だけが含まれます。
修正されたものがファイルの場合には、そのファイルの完全な内容と、属性が出力されます。
ディレクトリの場合には、そのすべての属性が出力されます。 

--ダンプファイル生成する際に有用な二つのオプションがあります。
+++一つ目は --incremental オプションで、これを指定するとダンプファイル出力中の最初のリビジョンが、
そのリビジョンを示す新しいツリー全体ではなく、そのリビジョンで修正のあったファイルとディレクトリのみになります。
それ以降のリビジョンについてもまったく同様です。
これはダンプ元のリポジトリに存在しているファイルとディレクトリをすでに含んでいる
別のリポジトリにロードするためのダンプファイルを生成する場合に便利です。 
+++もう一つの有用なオプションは --deltas です。このスイッチは、
ファイルの内容と属性についての完全なテキスト表現を出力するかわりに、
それぞれのリビジョンの直前のリビジョンとの差分だけを出力するよう svnadmin dump に指示します。
これは svnadmin dump が生成するダンプファイルのサイズを (場合によっては劇的に)減らします。
欠点としてはこのオプション?差分化ダンプファイルの指示?は生成にあたって CPU に
より大きな負荷がかかること、svndumpfilter によって処理できなくなってしまうこと、
そして、サードパーティー製のgzip や bzip2 を使う場合には、差分化しないものに対するほど
圧縮されない傾向があること、があります。

-''スイッチ''
 --revision (-r)
 --incremental
 --quiet
 --deltas

-''例''
--リポジトリ全体のダンプ:
 $ svnadmin dump /usr/local/svn/repos
 SVN-fs-dump-format-version: 1
 Revision-number: 0
 * Dumped revision 0.
 Prop-content-length: 56
 Content-length: 56


--リポジトリの一つのトランザクションの差分ダンプ: 
 $ svnadmin dump /usr/local/svn/repos -r 21 --incremental 
 * Dumped revision 21.
 SVN-fs-dump-format-version: 1
 Revision-number: 21
 Prop-content-length: 101
 Content-length: 101


***hotcopy [#b27c52a4]
-''用法''
 svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
-''説明''
--このサブコマンドはすべてのフック、設定ファイル、そしてもちろんデータベースファイルを含む、リポジトリの完全な「ホット」バックアップをとります。 --clean-logsスイッチを渡すとsvnadmin はリポジトリのホットコピー作成後、もとのリポジトリから利用していない Berkeley DB ログを削除します。このコマンドは常に利用可能で、他のプロセスがリポジトリを利用しているかどうかにかかわらずリポジトリのコピーを安全に作ることができます。 

-''スイッチ''
--clean-logs

***list-dblogs [#g20f1b77]
-(Berkeley DB リポジトリの場合のみ)リポジトリに関係したBerkeley DBログファイルのパスを一覧表示します。このリストはすべてのログファイルを含みます?現在Subversionが利用しているもの、もう利用していないものも含みます。

***list-unused-dblogs [#p6feb83e]
--(Berkeley DB リポジトリの場合のみ)リポジトリに関係したBerkeley DBログファイルで、既に利用していないもののパスを一覧表示します。そのようなログファイルはリポジトリレイアウトから安全に削除することができますが、リポジトリの壊滅からの復旧には必要となる事態にそなえてアーカイブすることもできます。 

***load [#q6242858]
-''用法''
 svnadmin load REPOS_PATH

-''説明''
--標準入力から「ダンプ形式」のデータを読み出し、リポジトリのファイルシステムに新しいリビジョンをコミットします。進行状況は標準出力に表示されます。 

-''スイッチ''
 --quiet (-q)
 --ignore-uuid
 --force-uuid
 --use-pre-commit-hook
 --use-post-commit-hook
 --parent-dir

-''例''
--バックアップファイルからリポジトリをロードする最初の部分です(もちろんあらかじめsvnadmin dumpでダンプしておいたものです):
 $ svnadmin load /usr/local/svn/restored < repos-backup
 <<< Started new txn, based on original revision 1
      * adding path : test ... done.
      * adding path : test/a ... done.

--サブディレクトリにロードしたい場合は:
 $ svnadmin load --parent-dir new/subdir/for/project /usr/local/svn/restored < repos-backup
 <<< Started new txn, based on original revision 1
      * adding path : test ... done.
      * adding path : test/a ... done.

***lslocks [#w7185cdc]
-リポジトリに存在するロックを説明つきで一覧表示します。

***lstxns [#v33b9e56]
-現時点でリポジトリに存在しているコミットされていない Subversionトランザクションの名前を一覧表示します。 

***recover [#lca0cfb2]
-必要に応じてリポジトリの回復ステップを実行します。普通はリポジトリとの間の通信をきれいに終了できなかったプロセスによって起きた致命的なエラーの後で実行します。 

***rmlocks [#i78dc5b2]
-一覧されたパスからロックを無条件に取り除きます。 

***rmtxns [#qa20fd3e]
-リポジトリからSubversionトランザクションをきれいに削除します。 (lstxns サブコマンドからの出力をこのプログラムに入力すると便利です) 

***setlog [#p81361b7]
-リポジトリ中の指定リビジョンのsvn:log (コミットログメッセージ)属性の値を新しい値で置き換えます。 

***verify [#re6e2aeb]
-リポジトリの内容を確認します。これはリポジトリに格納されたバージョン化されたデータのチェックサム比較、なども含まれます。