*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]]