svk patch って?
前から気にはなっていたのだけど、svk には patch というサブコマンドがある。ある程度の変更は、コミットする前にパッチ(diff)を ML に投げるって手順が多いので、このコマンドの機能が気になっていた。
まずは help。
% svk patch help
NAME
patch - Manage patches
SYNOPSIS
patch --ls [--list]
patch --cat [--view] PATCHNAME
patch --regen [--regenerate] PATCHNAME
patch --up [--update] PATCHNAME
patch --apply PATCHNAME [DEPOTPATH | PATH] [-- MERGEOPTIONS]
patch --rm [--delete] PATCHNAME
OPTIONS
--depot DEPOTNAME : operate on a depot other than the default one
…って、パッチを作成する方法がないじゃん!なんだよ --regen って?
というわけで CPAN のドキュメント SVK::Command::Patch。ついでに SvkHelp - GCC Wiki。さらに svk patch - SVK Book。
- パッチの作成は svk push -P(--patch) PATCHNAME で作成
- パッチは PATCHNAME で depot に保存される
ということがわかった。
GCC Wiki の例を見る限りでは、push -P でミラー先が更新されることはないようだけど、少し不安。RubyCocoa を修正するときに試してみるか、と思ったところ
% svk sync -s HEAD //mirror/rubycocoa_sf/trunk
RA layer request failed: REPORT request failed on '/svnroot/rubycocoa/!svn/bc/10
87/trunk': REPORT of '/svnroot/rubycocoa/!svn/bc/1087/trunk': 200 OK (https://sv
n.sourceforge.net)
というわけで、ローカルリポジトリ作れず。
(2007.02.12 追記)svk が利用している perl モジュールの問題のようです。コメントくれた人、ありがとうございます。
ついでに。10月に svk patch の動作まとめ たのでここに書いておく。