*SVK [#s20a20c2]
#contents
** SVK とは? [#t4df6d62]
リモートに存在するリポジトリをローカルに複製する事の出来るツールです。~
Subversion、CVS等のリポジトリを扱えます。~
リモートからリポジトリを複製し、メインとなるリモートのリポジトリと~
ローカル側に複製したリポジトリとでやりとりを行う体系を、~
''分散リポジトリ方式''と呼びます。~
この方式は、''Mercurial''や''Git''などでも使われています。~
なお、SVKではローカルに複製したリポジトリの事を、''depot''と呼びます。~
**SVK の利点 [#x91cc89a]
リポジトリをローカルに持つことにより、
-リモート側に影響を与えないため、こまめにコミットする事が出来る
-自分の好きなようにリポジトリを操作出来るため、branchを気軽に作成できる
-オフラインの環境でもコミット、更新、ログの参照が行える
--TortoiseSVNのVer1.5以降はログをローカルにキャッシュするようになったため、ログの参照は可能となった
--ただし、事前に全てキャッシュする必要がある
-参照元がローカルに存在しているため、ログの参照や差分の確認等が高速になる

-Subversionのリポジトリをバックアップする目的にも使用出来ます
--リモートとの差分を同期するので、フルバックアップする事に比べると負荷がかかりません
**SVK の難点 [#be511f85]
- Subversionの扱いに慣れていない人には、少し敷居が高いです
- SVKは本家の情報をミラー化したり、本家の修正内容をdepotに反映させたり、コミットした内容などを本家(オリジナル)に対して反映させたりするのにSVKコマンドで操作を行うため、どうしても敷居が高くなります。
- SVKで作られたリポジトリに対して、チェックアウト、コミットなどを行う際にTortoiseSVNを使う事は可能です。

**SVK のインストール [#z9daf731]
''※'' 環境変数に''SVKROOT''を設定しておくと、ユーザプロファイル配下に~
 depotが作成されなくなるので事前に設定しておく。

+ [[インストーラー>http://svk.elixus.org/view/SVKWin32]] をダウンロードし、インストールをする。
+ 全ユーザーの環境に反映するか?''(Change the environment for all users?)''というダイアログに対して''「はい」''を選びます。 
+ SVKで使用するリポジトリ(depot)の作成
 svk depotmap --init 
を実行します。
--''Repository %SVKROOT%/local does not exist, create? (y/n)''というメッセージが表示されるので''y''を入力します。~
--このコマンドは実行しなくても、次の手順で行う''svk mirror''時にdepotが存在しない場合~
自動で呼び出されるので、省略しても構いません。
~
-- 正常に終了すれば、%SVKROOT% 配下にdepotが作成されます。~
~
+ 作成したdepotにミラーオプションを付ける。
 svk mirror http://servername/svn/(ProjectName) //mirror/(ProjectName)
~
+ depotへのミラーを実行する。
 svk sync //mirror/(ProjectName)
-- 全履歴を取得しますが、場合によって悪影響を及ぼすので、最新の履歴で良い場合は、''--skipto HEAD'' オプションを追加すると良い。
+ ミラー化したdepotのブランチを作成する。
 svk cp //mirror/(ProjectName) //local/(ProjectName) --message "<何かメッセージ>" -p
-- -pを付け忘れるとエラーになる(と思う)ので注意
-- 運用方法によっては、//(ProjectName)/local のようにする場合もあります。

**SVK の運用方法とコマンドの使い方 [#ma227b12]

+ //mirror/(ProjectName) を最新の状態にする
 svk sync //mirror/(ProjectName)
+ 最新にした ''//mirror/(ProjectName)'' を  ''//local/(ProjectName)'' へ''反映(マージ)''させる
 svk pull //local/(ProjectName) 
-- マージが行われるので''コンフリクトする''場合もあります。
+ depotの ''//local/ProjectName)'' からソースをチェックアウトする
 例:file://%SVKROOT%/local/(ProjectName)/trunk
+ ソースの修正が終わったら、コミットを行って下さい。コミットの仕方は普段通りですので説明しません。
+ ''//local/(ProjectName)'' にコミットされた内容を ミラーする元となったリポジトリへ''push''します。
 svk push --verbatim //local/(ProjectName)
 ※push の引数について
 --verbatim
  svnのコミットログにSVKが自動で出力するログメッセージを付け加えない。
  svkを利用していない人にとって、svkのログは不要です。このオプションは必ず付ける位でいいでしょう。
 --lump
  デフォルトではチェンジセットを一つずつリモートに反映するが、このオプションによりまとめて1チェンジセットとして反映できる。
  depotへコミットを10回行っていても、svk→svnへのコミットを1度で済ませる。
  好みにもよりますが、ログメッセージが複数回分、ひとまとめにされるのでその点は気を付ける事。
+ pushして反映されるのはリポジトリに対してなので、続けて利用される場合は、
 svk sync //mirror/(ProjectName)
 svk pull //local/(ProjectName) 
として、depotを最新にするようにした方が良いでしょう。

~
**参考リンク [#i4c19b34]
-[[公式サイト>http://svk.bestpractical.com/view/HomePage]]
-[[Free SVK Book>http://svkbook.elixus.org/]]
-[[svkでsvn trunkの追っかけ>http://pub.cozmixng.org/~the-rwiki/?cmd=view;name=svk%A4%C7svn+trunk%A4%CE%C4%C9%A4%C3%A4%AB%A4%B1]]
-[[SVKを使ってみよう>http://mono.kmc.gr.jp/~yhara/w/?SvkTutorial>]]
-[[SVKを使ってみよう>http://mono.kmc.gr.jp/~yhara/w/?SvkTutorial]]
-[[svkの使い方まとめ>http://d.hatena.ne.jp/t2ru/20061123/1164263315]]
-[[svkの使い方>http://espion.just-size.jp/archives/07/310105417.html]]
-[[WindowsでSVKを使う>http://subtech.g.hatena.ne.jp/mayuki/20061108/1163049012]]
-[[SVKをレポジトリミラーシステムとして使うノウハウ >http://www.dkiroku.com/2005-08-24-5.html]]
-[[気の向くままに>http://wiki.livedoor.jp/syo1976/d/svk]]