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)
坂田 健二

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

TortoiseSVN 1.6 リリースノートを読んだ

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

昨日、Subversion 1.6.0 のリリースノート読んだので、TortoiseSVN 1.6のリリースノートも読もうかなと。

感想としては、堅実なアップデートって感じ。細かな所が改善されてておもしろそうなので、近いうちに乗り換えてみよう。

Compatibility Concerns

古いサーバでも問題なく動くけど、一部の機能が使えないよ...らしい。

SVNと同じくワーキングコピーは 1.6用に自動的にアップグレードされる。あと、やっぱ1.5に戻すって時のPythonスクリプトがあるって。

New Features / Enhancements

BDBでも file:/// アクセスできるようになった。というか、できなかったんだ

tree conflictに関して...はSVN同様、よくわからん

ログのキャッシュがよくなった。設定ダイアログに詳細があるみたい

リビジョングラフの出力がいい感じになったみたい。

IBugtraqProvider2で、コミットをリジェクトしたり、なんかバッチ処理かましたりしやすくなった。既にあった気がするんだけど、より使いやすくなったんでしょう。あと、プラグインが作りやすくなったみたい。

bug ID(Trac IDだったり?)で検索できるようになった

Known issues in 1.6

ファイル単位の externals設定できるようになった。


Subversion実践入門?達人プログラマに学ぶバージョン管理Subversion実践入門?達人プログラマに学ぶバージョン管理
(2005/08)
Mike Mason

商品詳細を見る

Subversion 1.6.0 Released

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

流行りは git。でも、仕事で使うのは Subversionという人が多い気がする。 さておいて、オレンジニュースで知ったんだけども、svn 1.6.0 がリリースされたので、ちょっと読んでみる

Compatibility Concerns

とりあえず上位互換してるみたい。

サーバ側は、dump load しなくても動くみたいで、なんかあったら svnadmin upgrade する感じでよさげ。

クライアント側は、ワーキングコピーが自動変換かかるので、TortoiseSVNとコマンドラインのsvnの両方を使う場合は同時にアップグレードしなきゃだめそう。

コマンドラインの出力メッセージが変った。proplist(--verbose)、status、update。ログ解析してる場合は要注意かな?

pre-lock hookがなんか変った。

New Features

パスワード関係。警告表示とOS連携とか...

コマンドラインで指定するパスなんだけど、^/ でリポジトリルートを指すようになった。svn ls ^/trunk...。これいいな~っ。

svn:externals で、ファイル指定ができるようになった。move/removeはできんが、copyはできるみたい。あとファイル名の空白にも対応らしい。

tree conflictの対応とあるけど、よくわからん。直感的な操作に近くなったってことだな(笑)

ファイルシステム関係は... Memcached対応がちょっち目をひいた!

Python binding関係...

Enhancements and Bugfixes

コマンドラインで conflictしたときに、TortoiseSVNのように mine, thierとか選択できるようになったので、楽になったっぽい。

コマンドラインで --exclude が増えた。checkoutの除外指定に使う。これは嬉しいかも

svnserveのログ機能

mod_dav_svnで URIの後ろに ?p=peg&r=rev を指定できるようになった。 メールで「当時のドキュメントはここにあります!」とリビジョン指定で示せるようになったんかな。まー確かに不便だなと思ってたとこだ。

-r のrev指定を複数できるようになった。

--trust-server-cert。httpsなのにサーバ証明書がダメなときに許容する

Subversion 1.4.x series no longer support

1.6になったし、そろそろ 1.4.x は勘弁してね。

New Dependency: SQLite

--with-sqlite を付けて makeしたら、svnで利用するらしい。 sqliteはやってる気がする。sqliteってお手軽で使いやすいもんね。


Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
(2007/04/21)
Mike Mason

商品詳細を見る

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

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