強制code review:reviewboard+svnのシナリオ
頼勇浩(http://laiyonghao.com)
2012年2月22日更新:ドキュメントを0.1.2-r 14バージョンと同期させる(変更部分は青色#3333 FFを使用).
2012年3月8日更新:ドキュメントを0.1.2-r 16バージョンと同期させる(変更部分は赤#CC 0000を使用).
2012年4月28日更新:ドキュメントを0.1.3-r 16バージョンと同期させる(変更部分は濃い紫色#993399を使用).
2013年10月17日更新:文書を0.2.1-r 20バージョンと同期させる(変更部分はマゼンタ#FF 6666を使用).私たちのチームは「天下盛境」プロジェクトを開発する時、比較的良いcode review戦略を制定し、実行し、いくつかの利点をまとめた:1つはコードスタイルが制御可能で、コード品質が一定に向上している;第二に、新入社員が入社した後、より多くの人の指導を受けることができ、成長が非常に速い.三つ目は、小さなバグが頻出している状況が、私が「天」を作る前のプロジェクトより少なくとも1つの数量グループ少ないことです.当時、私たちのcode review戦略はこうでした. reviewboardをツールとして使用し、SVN hooksによって毎回チェックインがreviewを通過することを強制する. には、少なくとも2人のチームメンバーship itが署名できます. ship itのメンバーのうち、少なくとも1人はベテランのチームメンバーです.
code reviewはこのように有効で、私はよく友达に推薦して、いくつかの友达が使った後、reviewboardとSVNを結果的にするのはやはり挑戦的だと思って、主にSVN hooksを書くのはやはり多くのものを学ぶ必要があるので、基本的に彼らはすべて放棄しました.今日はreviewboard-svn-hooksプロジェクトを修正、発表して、皆さんが使いやすいようにしました.
まずreviewboard-svn-hooksのサポートに感謝します.0.1.0バージョンがリリースされた後、多くの友达が使用を試み始めました.多くの問題に遭遇しました.諦めないで、積極的に私とコミュニケーションして、非常に詳細なエラー情報を提供してくれました.ここで感謝します.0.1.2バージョンでは、Windowsで実行中にWindowsError[Error:6]エラーが発生した原因を特定し、迂回した解決策を示します(以下を参照).インストール時にプロファイルが作成されなかった理由が見つかり、迂回した解決策が示されました(以下を参照).reviewにプロパティのみを指定するファイルの機能(review srcディレクトリの下のファイルのみ)が追加されました.
0.1.2-r 16はwindowsとの互換性をさらに強化した.同時にdebug logにも時間が表示されます.review_pathが空の場合、reviewのすべてのsvnコミット要求を強制することを示します.
0.1.3-r 16はpython 2.6への依存を取り消し、py 2.5と互換性がある.修正しましたreview_path、experts切断のエラー.
アップグレード
バージョン0.1.0からアップグレードする場合は、次の2つの点に注意してください.$COFDIR/reviewboard-svn-hooks/conf.iniをバックアップしてください.アップグレードすると、このファイルは新しいファイルで上書きされます.再構成の面倒を避けるために、先にバックアップしてください. $COFDIR/rb-svn-hooks-used-rid.dbファイルは$COFDIR/reviewboard-svn-hooks/rb-svn-hooks-used-rid.dbに移動しました.アップグレード後、古い場所の.dbファイルを手動で新しい場所に移動してください.$COFDIRの値については、linuxシステムでは/etc、windowsでは%ALLUSERSPROFILE%環境変数で指定された値になります.
いずれかの以前のバージョンからアップグレードするには、上記の方法でconf.iniをバックアップする必要があります.
インストール
だってeasy_install/pipなど自身の理由でeasy_をそのまま使用Install-U reviewboard-svn-hooksをインストールまたはアップグレードすると、サンドボックスエラーが発生します.インストール時にお越しくださいhttp://pypi.python.org/pypi/reviewboard-svn-hooks 圧縮ファイルを手動でダウンロードし、解凍してreviewboard-svn-hooksディレクトリに入り、以下のコマンドを実行してインストールします.
コンフィギュレーション
インストール後、reviewboard-svn-hookプロジェクトを構成する必要があります.オペレーティングシステムによっては、プロファイルを格納するディレクトリも異なります.linuxシステムの下で、その位置は/etcの下で、windowsシステムの下で、その位置は%ALLUSERSPROFILE%ディレクトリの下で(具体的にどのディレクトリを指して、参照してくださいhttp://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows).本明細書では、$COFDIRで表される.$COFDIR/reviewboard-svn-hooks/conf.iniファイルを開きます.次のように説明します.
SVN hooks構成
SVN倉庫ディレクトリの$REPOSを仮定し、SVN hooksを設定したことがありません.pre-commitを以前に構成した場合は、次のスクリプトを参照してstrictを呼び出す方法を考えてください.reviewアプリケーション.
linux
$REPOS/hooksディレクトリを開き、pre-commit.tmplをpre-commitと改名し、実行権限を加えてください.テキストエディタでpre-commitファイルを開き、中の内容をすべて削除し、次の内容に置き換えます.
これで、構成は完了します.
windows
$REPOS/hooksディレクトリを開き、pre-commit.tmplをpre-commit.batに名前を変更します.テキストエディタでpre-commitファイルを開き、中の内容をすべて削除し、次の内容に置き換えます.
C:python 26というディレクトリを、本機のpythonインストールパスに置き換えてください.これで、構成は完了します.
すでに使用されているreviewboardと統合する前にreviewboardを使用して何度もcode reviewをしたことがある場合は、以前に使用したreview request idを廃棄する作業が必要です.まず、使用した最大のreview request idを見つけてメモし、コマンドラインで次のコマンドを実行します.
ここで、$CONFCIRの値は前述の通り、$MAX_REQ_IDは前述した最大のreview request idです.
レビューフロー
チームメンバーは、コードをコミットする前にpost-reviewツールを使用してreview boardにreview requestを作成する必要があります.構成の良いreviewboardはすべてのメンバーに自動的にメールを送信することができ、メールの通知を受け取った後、みんなは暇を見つけてreviewコードに行き、reviewの結果もメールでみんなに知らせるので、reviewを始めた同僚はすぐにreview requestを知ることができます. と入力します.十分なship itが収集されると、彼はSVNに変更を提出することができます.唯一注意しなければならないのは、log messageに正規表現r'review:([0-9]+)'に合致する情報を書くことです.例えば、review:1999は、今回提出した変更対応IDが199のreview requestを表し、strict_reviewというhookはreview request 199が予め設定された条件に合致していることを検出すると、変更を倉庫に入れるように放行する.
その他最後に、使用中に何か問題があったら、http://code.google.com/p/reviewboard-svn-hooks/issues/list ティissueが教えてくれた
2012年2月22日更新:ドキュメントを0.1.2-r 14バージョンと同期させる(変更部分は青色#3333 FFを使用).
2012年3月8日更新:ドキュメントを0.1.2-r 16バージョンと同期させる(変更部分は赤#CC 0000を使用).
2012年4月28日更新:ドキュメントを0.1.3-r 16バージョンと同期させる(変更部分は濃い紫色#993399を使用).
2013年10月17日更新:文書を0.2.1-r 20バージョンと同期させる(変更部分はマゼンタ#FF 6666を使用).私たちのチームは「天下盛境」プロジェクトを開発する時、比較的良いcode review戦略を制定し、実行し、いくつかの利点をまとめた:1つはコードスタイルが制御可能で、コード品質が一定に向上している;第二に、新入社員が入社した後、より多くの人の指導を受けることができ、成長が非常に速い.三つ目は、小さなバグが頻出している状況が、私が「天」を作る前のプロジェクトより少なくとも1つの数量グループ少ないことです.当時、私たちのcode review戦略はこうでした.
code reviewはこのように有効で、私はよく友达に推薦して、いくつかの友达が使った後、reviewboardとSVNを結果的にするのはやはり挑戦的だと思って、主にSVN hooksを書くのはやはり多くのものを学ぶ必要があるので、基本的に彼らはすべて放棄しました.今日はreviewboard-svn-hooksプロジェクトを修正、発表して、皆さんが使いやすいようにしました.
まずreviewboard-svn-hooksのサポートに感謝します.0.1.0バージョンがリリースされた後、多くの友达が使用を試み始めました.多くの問題に遭遇しました.諦めないで、積極的に私とコミュニケーションして、非常に詳細なエラー情報を提供してくれました.ここで感謝します.0.1.2バージョンでは、Windowsで実行中にWindowsError[Error:6]エラーが発生した原因を特定し、迂回した解決策を示します(以下を参照).インストール時にプロファイルが作成されなかった理由が見つかり、迂回した解決策が示されました(以下を参照).reviewにプロパティのみを指定するファイルの機能(review srcディレクトリの下のファイルのみ)が追加されました.
0.1.2-r 16はwindowsとの互換性をさらに強化した.同時にdebug logにも時間が表示されます.review_pathが空の場合、reviewのすべてのsvnコミット要求を強制することを示します.
0.1.3-r 16はpython 2.6への依存を取り消し、py 2.5と互換性がある.修正しましたreview_path、experts切断のエラー.
アップグレード
バージョン0.1.0からアップグレードする場合は、次の2つの点に注意してください.
いずれかの以前のバージョンからアップグレードするには、上記の方法でconf.iniをバックアップする必要があります.
インストール
だってeasy_install/pipなど自身の理由でeasy_をそのまま使用Install-U reviewboard-svn-hooksをインストールまたはアップグレードすると、サンドボックスエラーが発生します.インストール時にお越しくださいhttp://pypi.python.org/pypi/reviewboard-svn-hooks 圧縮ファイルを手動でダウンロードし、解凍してreviewboard-svn-hooksディレクトリに入り、以下のコマンドを実行してインストールします.
python setup.py install
コンフィギュレーション
インストール後、reviewboard-svn-hookプロジェクトを構成する必要があります.オペレーティングシステムによっては、プロファイルを格納するディレクトリも異なります.linuxシステムの下で、その位置は/etcの下で、windowsシステムの下で、その位置は%ALLUSERSPROFILE%ディレクトリの下で(具体的にどのディレクトリを指して、参照してくださいhttp://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows).本明細書では、$COFDIRで表される.$COFDIR/reviewboard-svn-hooks/conf.iniファイルを開きます.次のように説明します.
[common]
# debugging ,0 ,
debug = 0
[reviewboard]
# reviewboard
# , http://example.com/reviewboard/ “/”
url=
# reviewboard , http API reviewboard review request
username=
password=
[rule]
# ship it
min_ship_it_count =
# ship it
min_expert_ship_it_count =
# reviewboard ,
experts =
# --------- 0.1.2-r16 ---------
# --------- 0.1.2-r14 ---------
# review , , , review
# , review
# : review_path = src, "cc/d,oc"
# src cc/d,oc review,
#
review_path =
# --------- 0.2.1-r20 ---------
# ignore_path , 。
ignore_path =
SVN hooks構成
SVN倉庫ディレクトリの$REPOSを仮定し、SVN hooksを設定したことがありません.pre-commitを以前に構成した場合は、次のスクリプトを参照してstrictを呼び出す方法を考えてください.reviewアプリケーション.
linux
$REPOS/hooksディレクトリを開き、pre-commit.tmplをpre-commitと改名し、実行権限を加えてください.テキストエディタでpre-commitファイルを開き、中の内容をすべて削除し、次の内容に置き換えます.
REPOS="$1"
TXN="$2"
strict_review $REPOS $TXN
exit $?
これで、構成は完了します.
windows
$REPOS/hooksディレクトリを開き、pre-commit.tmplをpre-commit.batに名前を変更します.テキストエディタでpre-commitファイルを開き、中の内容をすべて削除し、次の内容に置き換えます.
setlocal
set REPOS=%1
set TXN=%2
; --------- 0.1.2-r16 ---------
; --------- 0.1.2-r14 ---------
C:\python26\python.exe C:\python26\Scripts\strict_review-script.py %REPOS% %TXN%
exit %errorlevel%
C:python 26というディレクトリを、本機のpythonインストールパスに置き換えてください.これで、構成は完了します.
すでに使用されているreviewboardと統合する前にreviewboardを使用して何度もcode reviewをしたことがある場合は、以前に使用したreview request idを廃棄する作業が必要です.まず、使用した最大のreview request idを見つけてメモし、コマンドラインで次のコマンドを実行します.
# --------- 0.1.2-r14 ---------
init_used_rid_db $CONFDIR/reviewboard-svn-hooks/rb-svn-hooks-used-rid.db $MAX_REQ_ID
ここで、$CONFCIRの値は前述の通り、$MAX_REQ_IDは前述した最大のreview request idです.
レビューフロー
チームメンバーは、コードをコミットする前にpost-reviewツールを使用してreview boardにreview requestを作成する必要があります.構成の良いreviewboardはすべてのメンバーに自動的にメールを送信することができ、メールの通知を受け取った後、みんなは暇を見つけてreviewコードに行き、reviewの結果もメールでみんなに知らせるので、reviewを始めた同僚はすぐにreview requestを知ることができます. と入力します.十分なship itが収集されると、彼はSVNに変更を提出することができます.唯一注意しなければならないのは、log messageに正規表現r'review:([0-9]+)'に合致する情報を書くことです.例えば、review:1999は、今回提出した変更対応IDが199のreview requestを表し、strict_reviewというhookはreview request 199が予め設定された条件に合致していることを検出すると、変更を倉庫に入れるように放行する.
その他最後に、使用中に何か問題があったら、http://code.google.com/p/reviewboard-svn-hooks/issues/list ティissueが教えてくれた