2006年11月15日

生のsvnを使っていて良いのは中学生までなのでsvkを始めました。
といってもmacbookの方にはsvkを入れてたんだけど、あまり使っていなかったのでメインの開発環境にsvkを入れました。

ありきたりでつまらない内容ですがチラシの裏です。

install

SVN::Mirror 0.72 は subversion 1.2 以上を要求してくるので、手元の環境で使えずに0.71を入れました。
LANG=jaな環境でinstallするとtestこけるのでLANG=C cpanな感じでinstallです。

そしてinstall SVKなのですが、06keyword.tでなんかこけるのでforce installです。(SVK 1.08)
こけてる内容もクリティカルじゃ無いっぽいので無視です。
なんかsvk-devにも報告あがってるみたいだけど、よく読んでない。

setup

$ svk mirror http://svn.yappo.jp/repos/public/ //mirror/public
$ svk sync //mirror/public
$ svk cp //mirror/public //public
教科書的にミラーを作ってローカルブランチ作成です。

import to local

importしたいファイルのカレントディレクトリで
$ svk import //public//proj/trunk -m 'proj import'
してがしがしimportしました。
ローカルに連続でimportしてってもいいし、一個importするたびにほんとのリポジトリにうpしてってもいいのかな。
一個一個やってったほうが奇麗かも。理由はあとで。

commit to remote

smerge

ローカルブランチのcommitをリモートの本家リポジトリに反映します
$ svk smerge //public //mirror/public -m 'commit message'
これで、全ての変更内容がhttp://svn.yappo.jp/repos/public/に反映されます。
全部いっぺんがいやなら
$ svk smerge //public/Soozy/trunk //mirror/public/Soozy/trunk
でもいけるはず。まだ試してないけど。
これだと、手元で細かくcommitしてるのに本家は荒くなっちゃうので
$ svk smerge -l //public //mirror/public
として、ローカルのコミットログをまとめて送れるようになります。
いったんコミットメッセージをエディタに流し込んでくれる形なので、任意な形でコメントが書けます。
これでも、diffの内容としては荒いので
$ svk smerge -I //public //mirror/public
として、ローカルの1コミット毎の内容をそのまま本家に転送します。
ローカルで上げたリビジョンの数だけ本家もリビジョン上がる感じです。
これやった瞬間に本家に全部コミットされるので注意です。

で、importしたときにsvk smerge -Iとかしちゃうと、2回分のログが発生するのでimportしたらオプション無しのsvk smergeして2回分を1回にまとめちゃうと奇麗かなぁと思いました。
http://trac.yappo.jp/trac/changeset/178みたいな感じです。
纏めないとhttp://trac.yappo.jp/trac/changeset/181http://trac.yappo.jp/trac/changeset/182のように2回に分かれます。

どうでもいいっすね。

svk push

カレントディレクトリのリポジトリをsmergeするって感じすかね。
ここでは
$ svk co //public ./public
cd ./public
したものとして書いてます。
ローカルの1コミットを纏めてコミットする
$ svk push -l

バラバラでコミットする
$ svk push

svkが付けるコメント

特にオプションつけないでsmerge/pushすると
r196@haruna: ko | 2006-11-15 19:51:20 +0900
みたいなコメントが自動的に付与されますが、これを消したい場合は--verbatimオプションをpush/smerge時に付ければ消えます。

よく考えれば、普通はsvk pushを使うね。
こんかいはimportしまくったからsmergeしただけか。

svk pull

svk co //publicでチェックアウトした先のディレクトリでsvk pullすると、本家リポジトリが変更されてたら、//mirror/publicもupdateした上で//publicもupdateして、手元のディレクトリの内容もupdateしてくれた。
pullした時のmirror/local/currentdirを通したコリジョンとかの扱いはよくわかってない。

push/smergeする前に-Cオプションで変更点を確認しないと高校に入れないので注意。

以上、チラシの裏Boofy

Posted by Yappo at 2006年11月15日 21:15 | TrackBack | tech
Comments
Post a comment









Remember personal info?






コメントを投稿する前に↓の場所にnospamと入力してください。