きりかノート 3冊め

おあそびプログラミング

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 の動作まとめ たのでここに書いておく。