CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SubversionのコミットメールをPerlで書いた

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

Subversionのコミット通知メールをPerlで書いた。

svnは中央集権型だからか
誰かがコミットしたとか最新の更新情報が欲しくなるので、
コミット通知はやっぱかかせない。

svnのサーバでコミットメールを配信するには、
リポジトリのhookディレクトリにpost-commitという名の
スクリプトをおいてその中で配信すればいい。
(Windowsの場合はpost-commit.batにするんだったかな)

メール配信するスクリプトは一般的にはcommit-email.plを使う。
このスクリプトはsvn本家のサイトに置いてある..と思ったら、rubyになってた!!
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/commit-email.rb

一瞬、これでいいじゃんとは思うけど、
日本語化が必要だったり、BTSとの連携面が弱いので
自分で書いてみた。perlだけど。

書いたスクリプトは gist に置いた。
https://gist.github.com/924175

配信されたメールはこんな感じ。

Date: Mon, 18 Apr 2011 00:08:20 +0900
From: commiter 
To: ccc@ddd.eee
Subject: [yourprj]r1 - first commit

first commit

hogehoge
ageage

(refs #1,2,3000)
(refs 4)

Author:  commiter
Date:    2011-04-18 01:00:15 +0900 (月, 18  4月 2011)
Rev:     r1 http://path/to/trac/yourprj/changeset/1
Tickets: #1 http://path/to/trac/yourprj/ticket/1
         #2 http://path/to/trac/yourprj/ticket/2
         #3000 http://path/to/trac/yourprj/ticket/3000
         #4 http://path/to/trac/yourprj/ticket/4
Changed:
  A   hello
  A   world

BTSはTrac用に書いてみた。
複数のチケット、チェンジセットへのリンクを
メールに載せるようにしてある。

そうそう。設置方法は hookにあるpost-commit.tmplを参考に

#!/bin/sh

REPOS="$1"
REV="$2"

"$REPOS"/hooks/svn-ci-mail.pl "$REPOS" $REV

こんな感じで



実用 Subversion 第2版実用 Subversion 第2版
(2009/07/27)
C. Michael Pilato、Ben Collins-Sussman 他

商品詳細を見る


入門Trac with Subversion―Linux/Windows対応入門Trac with Subversion―Linux/Windows対応
(2008/05)
高山 恭介

商品詳細を見る


Perl逆引きクイックリファレンス―Perl5.8対応Perl逆引きクイックリファレンス―Perl5.8対応
(2007/03)
坂田 健二

商品詳細を見る
スポンサーサイト

Macで Trac+apache の環境構築

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

tracをapache経由にする。mod_pythonを使う。

$ sudo port install apache2
...
libtool: compile: unable to infer tagged configuration
libtool: compile: specify a tag with `--tag'
make[3]: *** [unixd.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

なんかエラーでた。先人によれば、'--trac=CC'とすればいいともあるが、portのupgradeでもなんとかなるともある。

$ sudo port upgrade libtool
$ sudo port upgrade apr
$ sudo port upgrade apr-util
$ sudo port install apache2
$ sudo port install mod_python25
# apache2 をシステム起動時に自動起動
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
$ sudo vim /opt/local/apache2/conf/httpd.conf
+ LoadModule python_module modules/mod_python.so
$ sudo /opt/local/apache2/bin/apachectl restart

そういえば、前にapacheの設定をしてたので、事前に[システム環境]→[共有]→[パーソナルWeb共有]のチェックを外しておく。http://localhost/ にアクセスしてapacheのページが見えることを確認。

httpd.confはユーザ用ディレトリでできるだけ書くことにする。

$ vim /opt/local/apache2/conf/httpd.conf
 <Directory />
     Options FollowSymLinks
-    AllowOverride None
+    AllowOverride All
     Order deny,allow
     Deny from all
 </Directory>

+Include /Users/user1/Sites/httpd.conf

pythonのチェックをしてみる。

$ vim ~/Sites/httpd.conf
<Location /mpinfo>'
   SetHandler mod_python'
   PythonInterpreter main_interpreter'
   PythonHandler mod_python.testhandler'
</Location>'
$ sudo /opt/local/apache2/bin/apachectl restart

として、http://localhost/mpinfo にページが表示されるのを確認。

tracの設定

$ mkdir ~/Repos/trac/.egg-cashe
$ chown -R www:www ~/Repos/trac
$ vim ~/Sites/httpd.conf
+<Location /trac>'
+  SetHandler            mod_python'
+  PythonInterpreter     main_interpreter'
+  PythonHandler         trac.web.modpython_frontend'
+  PythonOption TracUriRoot      /trac'
+  PythonOption TracEnvParentDir /Users/user1/Repos/trac/'
+  PythonOption PYTHON_EGG_CACHE /Users/user1/Repos/trac/.egg-cache'
+
$ sudo /opt/local/apache2/bin/apachectl restart

として、http://localhost/trac でtracのindexページにアクセスできることを確認


入門Trac第2版―Linux/Windows対応入門Trac第2版―Linux/Windows対応
(2009/08)
高山 恭介

商品詳細を見る

Macで Trac+git の環境構築

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

最近、趣味プロするときは git を使ってみていて、メモ代わりに trac も繋げてみようかなと。

キーワードはこんな感じだった気がする。

  • python2.5
  • trac0.11.2.1
  • easy_install
  • X-MAC-JAPANESE

素のpythonが古そうだったのでてきとうに 2.5 に差し替えてみる

$ python
Python 2.3.5 (#1, Nov 26 2007, 09:16:55) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363) (+4864187)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

$ sudo port install python2.5
$ sudo sudo ln -s /opt/local/bin/python2.5 /opt/local/bin/python
$ sudo port install py25-setuptools

tracと GitPlugin のインストール

$ sudo easy_install-2.5 trac
..
Installed /opt/local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-macosx-10.3-i386.egg
Finished processing dependencies for trac
$ sudo easy_install-2.5 http://trac-hacks.org/svn/gitplugin/0.11/

リポジトリ用のディレクトリを掘って、git-clone。そうそう。Apache(httpd)は使わないつもり

$ mkdir -p ~/Repos/trac/gitrepo/
$ mkdir -p ~/Repos/git/gitrepo/
$ cd ~/Repos/git/gitrepo/
$ git clone --bare ~/using-repo gitrepo

gitは使ってたリポジトリから cloneした。そういえば、using-repo -> gitrepo に push できるのかな(?)

やりたくなったら調べよう。gitrepo の直下は .gitの中身相当が入る。

次に trac リポジトリ。

一人用でアクセス制限なしなので、anonymousに必要に応じて権限を足す方向で。あと、sqliteがどうのとエラーが出たので sqlite をてきとうにアップデートして rehashと思ったが bashに無かったので、途中でシェルを立ち上げなおしたりしてる。

$ sudo port install py25-sqlite3
$ trac-admin ~/Repos/trac/gitrepo/
Welcome to trac-admin 0.11.2.1
Interactive Trac administration console.
Copyright (c) 2003-2008 Edgewall Software

Type:  '?' or 'help' for help on commands.
        
Trac [/Users/user1/Repos/trac/gitrepo]> initenv
Creating a new Trac environment at /Users/user1/Repos/trac/gitrepo
...
Repository type [svn]> 
...
Path to repository [/path/to/repos]> /Users/user1/Repos/git/gitrepo
...
Congratulations!

Trac [/Users/user1/Repos/trac/gitrepo]> permission add anonymous TRAC_ADMIN CONFIG_VIEW
Trac [/Users/user1/Repos/trac/gitrepo]> quit

なーんか trac-admin がエラー出る。文字コードっぽいのと、readlinkっぽいのが。上記の通りならエラーでずに使えるのでよしとする。

conf/trac.ini の設定変更は下記くらいだったはず

+ [components]
+ tracext.git.* = enabled

  [git]
- git_bin = git
+ git_bin = /opt/local/bin/git

で、早速 tracd を立ち上げると

LookupError: unknown encoding: X-MAC-JAPANESE

とか出る。先人の知恵をいろいろ探してみたところ、2.5だけどうも問題がある様子。下のどちらかで対策するものが多かった。

  • python2.5 のソースにパッチ
  • trac のエラーが出た付近にパッチ

パッチはあてない方がいいなぁーとてきとうに試した。

ちらっとLANGがどうのとあったので試したけどLANGは無視してそうなのがわかって、あと sudo したときに環境がどう引き継がれるかが問題な気がするもののよく調べず、そういや LC_ALLはどうだろ試したら...うまくいった。

$ LC_ALL=ja_JP sudo tracd -p 8080 `pwd` 

ポートは /etc/services を見ると httpd が予約だけど使ってないからよし(笑)

無事、http://localhost:8080/gitrepo で、tracにアクセスできたー。

まだ、ソースに書いた日本語が化けてるけど、疲れたのでしまい。しまい。


入門Trac第2版―Linux/Windows対応入門Trac第2版―Linux/Windows対応
(2009/08)
高山 恭介

商品詳細を見る

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

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