スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Trac]Trac0.12のCommitTicketUpdaterでもコミットファイル列挙

今更ですがTrac0.12からマルチリポジトリに対応してるので
バージョンアップしようかな…とTracLightning3.1.3を入れてみたところ
post-commit-hookスクリプトが無くなってました。

でもrefsコマンドは動きます。
どうやらSVN連携はプラグインになったらしいです。(これも今更?)
trac 0.12.xの↓が有効なら動作します。

commit_updater

正確にはSVNのhookスクリプト(hooks/post-commit.bat)でチェンジセットを追加して
IRepositoryChangeListenerを実装したUpdaterがイベントを受け、コミットメッセージからコマンドを見つけて、チケットを更新する流れのようです。

また、マルチリポジトリでは複数のリポジトリを登録するので
当然リビジョン番号がかぶりますが

[リビジョン/リポジトリ名]

という形式で書くと、CommitTicketReferenceMacroによって
きちんとリポジトリ別にリンクが張られます。
CommitTicketUpdaterはこのあたりも勝手にやってくてれるので便利。
マルチリポジトリ環境でも、この情報の通りにhookスクリプトを用意すればOKです。
ちなみに、今まで通りの[リビジョン]では、デフォルトリポジトリ(廃止予定らしい)へのリンクになります。

で、以前[Trac]trac-post-commit-hookでコミットファイル列挙てなことを書いたので、
今回も一応、簡単ですが変更ファイルの列挙くらいはしてみようと思います。

今回変更するのは一カ所、上記プラグインのスクリプトだけ変更します。(バージョンは読み替えてください)

%TRAC_HOME%/python/Lib/site-packages/Trac-0.12.2.ja1-py2.6.egg/tracopt/ticket/commit_updater.py

チケットに書き込むコメントを変更します。(水色のところだけ変えてます)

def make_ticket_comment(self, repos, changeset):
"""Create the ticket comment from the changeset data."""
revstring = str(changeset.rev)
if repos.reponame:
revstring += '/' + repos.reponame

# チェンジセットから変更ファイルを取得して列挙
files = ''
for npath, kind, change, opath, orev in changeset.get_changes():
files += change + ':' + npath + '[[BR]]'


return """\
In [%s]:
{{{
#!CommitTicketReference repository="%s" revision="%s"
%s
}}}
%s
""" % (revstring, repos.reponame, changeset.rev,
changeset.message.strip(), files)


おおざっぱですがこれだけです。
SVN連携の動きを変えたければ、このスクリプトを弄る感じですね。
スポンサーサイト

theme : ソフトウェア
genre : コンピュータ

[Trac][Python]Tracプラグイン開発ことはじめ

仕事ばかりで実装していてもつまらないですね。
てなわけでTracのプラグイン開発をしようと思いたちました。

いろいろと調べ始めたので、少しずつこちらのブログにも書いていきたいなと、
役に立つかわかりませんが。

とりあえずEclipseとPydevの環境は作りました。
以下のサイトを参考にさせていただきました。
かおるんダイアリー TracLighting と Eclipse で始める、ゼロからの Trac プラグイン開発

Eclipse3.6(Helios)でしたが、上記の通りでサンプルのプラグイン作成までいけます。
MergeDocには今回のHelios+Pydev環境はないみたいですね。

次にプラグインが実装するTracの各種インターフェースの仕様なのですが、、、まだ調査中です。
現在参考にさせていただいているサイトを書いておきます。
TracDoc/Interface – HirobeのHack倉庫 – Trac
The Trac Project TracDev/PluginDevelopment

いやしかし、日本語しかできないと情報が少ないね。。。
英語がんばろ。

theme : ソフトウェア
genre : コンピュータ

[Trac]trac-post-commit-hookでコミットファイル列挙

この情報はTrac0.11(TracLightning2.x)の話になります。
Trac0.12(TracLightning3.x系)のSVN連携はTrac0.12のCommitTicketUpdaterでもコミットファイル列挙に新しく書きました。



SVNのコミット時のhookスクリプトで、TracとSVNを連携させることが出来ますよね。
TracLightningをインストールした環境であれば。例えば

refs #[チケット番号]

↑という感じで、コミット時のコメントに書いておくと、チケットにはコミット時のコメントが書かれ、さらにリビジョン番号が追記される形になっています。
主な処理はtrac-post-commit-hookスクリプトで行っています、つまりこのスクリプトを変更すればいろいろ出来てしまうわけですね。

ということで今回、コミット時に書き込まれるチケットコメントにコミットファイルを列挙するように変更を加えました。その変更のメモです。

Tracのチケットビューワーからならばチェンジセット(リビジョン)に飛べるので問題ないのですが、Tracから自動配信されるメールからは、何のファイルがコミットされたのかわからないので、Tracのチケットコメントにそれらを列挙してしまおうということです。

二段階で変更を加えます。

①[TracLight]/bin/post-commit.shの変更
②[TracLight]/python-lib/trac/contrib/trac-post-commit-hookの変更

①[TracLight]/bin/post-commit.shの変更


#!/bin/sh

REPOS="$1"
REV=$2
TL_PROJECT_HOME="$3"
PROJECT="$4"


# LOG=`svnlook log -r $REV "$REPOS"`
LOG=`svnlook changed -r $REV "$REPOS"`
AUTHOR=`svnlook author -r $REV "$REPOS"`
TRAC_ENV="$TL_PROJECT_HOME/trac/$PROJECT"

"$TRAC_LIGHT_HOME/python/python.exe" "$TRAC_LIGHT_HOME/python-lib/trac/contrib/trac-post-commit-hook" \
-p "$TRAC_ENV" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG"



svnlookでlog(コミットコメント)を取得している処理を、changed(コミットファイル)の取得に変更しています。問題ありそうな変更なのですが、trac-post-commit-hookでは、このLOGを渡している-m引数は使われて無かったのできっと平気。たぶん・・・
そんなわけで、このLOGは、trac-post-commit-hookに-mオプションの引数として渡ります。

②[TracLight]/python-lib/trac/contrib/trac-post-commit-hookの変更


def __init__(self, project=options.project, author=options.user,
rev=options.rev, url=options.url):
・・・
#self.msg = "(In [%s]) %s" % (rev, chgset.message)
self.msg = "(In [%s]) %s" % (rev, options.msg + chgset.message)
・・・



ここでは、-mで渡ってきた引数(options.msg)をチケットのコメントに追加しています。スクリプトを見ると、-m引数を使わずchgsetからコミットコメントを取得しているようです。むむ・・だから簡単に変更が加えられたのですが。。

以上で、チケットのコメントに変更ファイルが列挙されるようになります。
フォーマットは好きに変更すればOK。

------
2010/05/22 追記

日本語ファイルのコミットで文字コードがらみのエラーが出ます。
その際はエンコードを指定してunicodeに変換してください。(例はwin環境)

self.msg = "(In [%s]) %s" % (rev, unicode(options.msg, 'cp932') + chgset.message)

theme : ソフトウェア
genre : コンピュータ

自己紹介

煩悩即菩提

Name:煩悩即菩提


三流SEです。
開発は基本Javaです。
Androidアプリ作り隊。。

お絵かきを少々しとります。
こちらもぱっととしないのが悩みです。

bonnosokubodaiをフォローしてください

Pixivアカウント

カレンダー   
Recomend


ビデオニュース・ドットコム
検索フォーム
最新記事
最新コメント
月別アーカイブ
カテゴリ
最新トラックバック
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。