subversionによるパッチの投稿方法
概要
- パッチ投稿はパッチ用のタグフォルダ
/patches/
上にタグを作成することで行います。パッチの内容はパッチを当てたリビジョンとタグの差分となります。 - パッチはなるべく内容毎に別けて一件ずつコミットして下さい。依存関係にない複数の内容を一度に入れられると一部パッチの改良等が面倒になります。そんなことやって居られないような大きく広範囲な状態であればMLで相談しましょう。
- パッチはタグなので開発倶楽部MLで公開した後にパッチの動作的・意味的な変更があるなら必ず別パッチにして下さい。コミット上のミスやコメントの修正など些末な変更であれば、そのままパッチタグ上にコミットしても問題有りません。
パッチ投稿手順例
以下、パッチ投稿手順とコマンドラインクライアントでの操作例を示します。
- パッチ投稿のベースとなるリビジョンをリポジトリからcheckoutします。例えば以下の様な場所からです。ソースの系統的に適切な場所を作業ベースとして下さい。
- 通常は公式ビルドの最新 (current)…
/trunk/
- 最新には当てられない内容で有れば、必要なリリース済みの公式ビルド(stableもしくは過去のβ版)…
/tag/ 内のどれか
- 公式ビルドに統合されていない特定のパッチの改良か、それに依存している…
/patches/PATCHNUMBER
例:V32.1.6のcurrentソースをden8work
へチェックアウト
>svn checkout svn://svn.denshin8.jp/den8dev/V32.1.6/trunk ./den8work
(IDとパスワードはMLに配信されるメールを参照して下さい。) - 通常は公式ビルドの最新 (current)…
- チェックアウトした作業コピーに投稿するパッチを当て(マージ)します。
- 新規に追加するファイルがある場合は add を忘れないようにしましょう。
例:newfile.cppを追加する場合
>svn add newfile.cpp
- 作業中.svnフォルダを直接編集してしまわないように気をつけましょう。
- ファイル全体をコピーするときは、パッチ以外の差分があるかも知れませんので注意してください。
- den8dev MLにパッチの内容を報告して下さい。そのメールの記事番号がパッチ番号です。
メールの内容はこちらを参照して下さい。- 作業コピー上で
>svn status
とすると変更・追加ファイルの一覧が出ます。
- これからコミットするリポジトリのパス
(メール投稿時点ではパッチ番号は未確定なので単に # とでもしておいて下さい。) - その他備考
- 作業コピー上で
- 作業コピーの内容で、パッチ番号のタグを
/patches
上に作成します。- subversionのタグはフォルダのコピーですのでcopyコマンドを使用します。コピー元に作業コピーを指定すれば一回の操作で完了します。
- 一部のGUIクライアントでもタグ・ブランチ作成機能でコピー作成元を作業コピーに指定可能です(図はTortoiseSVNの例)。
そのような機能がない場合は、普通にブランチを作って(copyして)、switchして、コミットして下さい。
例: ML記事番号が [den8dev:08086]のとき 、
den8work
フォルダ上で
>svn copy . svn://svn.denshin8.jp/den8dev/V32.1.6/patches/08086 -F logmsg.txt
とすれば/patches/08086
が作成され、コミットされます。作業ベースは勝手に/patches/08086
に変わったりはしません。
※logmsg.txtはコミットログです。パッチの内容説明を書いておいて下さい。
- 作成したタグの内容を確認して下さい。
- 作業コピーを
switch
してstatus
を取るか、別にチェックアウトして比較します。例:作業コピーのベースを/patches/08086
に切り替える。
>svn switch svn://svn.denshin8.jp/den8dev/V32.1.6/patches/08086
これで、den8work
は/patches/08086
が作業ベースになります。statusをとれば/patches/08086
からの作業コピーの状態が出ます。
- パッチに対する些末な修正が必要でコミットすることが出来ます。例えばコメントのパッチ番号を直すなど。
例:作業ベースを
/patches/08086
にswitch
しておきます(前出)。コミットは次の様にします。
>svn commit -F logmsg.txt
- 作業コピーを
備考
- 上の手順は一例です。先にMLに報告→パッチ番号を確定してタグ作成→パッチ内容をコミット等でも構いません。