Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
*Backtrace*(2007-06-17)
[go: Go Back, main page]

書いてる人: 高橋カヲル | [mixi] | [PGP] | [TETRiS DS] | [portscout] | [RSS]

トップ «前の日記(2007-06-16) 最新 次の日記(2007-06-18)» 編集

*Backtrace*

1999|12|
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|

2007-06-17

_ ファイル名にカタカナやひらがな使われてもそれなりに動くpost-commit hook

波ダッシュ問題にぶつかったときに追加&封印してた機能を実験してみた。

LC_ALL複数回設定してるのもsvnlookが無駄に走ってるのもセンスねーよな。LC_TIME=CとLC_CTYPE=ja_JP.UTF-8とでもすりゃあいいのよ、こんなもの。Date:とMessage-ID:つけるのはMUAの仕事です、当然です。あと、閏秒はcommit時に対処しましょう。

#!/usr/local/bin/ruby
	
tolist = %w(nobody@example.org nobody@example.net)
fromaddr = 'svn@svn.example.org'
	
# repos independent settings
smtpserver = 'localhost'
	
# ARG
REPOS=ARGV[0]
REV=ARGV[1].to_i
	
toaddr = tolist.join(', ')
	
ENV['PATH'] = '/bin:/usr/bin:/usr/local/bin'
ENV['LC_ALL'] = 'C'
svnauthor=%x{svnlook author #{REPOS} -r #{REV}}.chomp
	
svndate=%x{svnlook date #{REPOS} -r #{REV}}.chomp
require 'time'
date = Time.parse(svndate).rfc822
	
ENV['LC_ALL'] = 'ja_JP.UTF-8'
iconv_command = 'iconv -c -s -f UTF-8 -t ISO-2022-JP'
#iconv_command = 'iconv -c -s -f UTF-8 -t CP932 | iconv -c -s -f SJIS -t ISO-2022-JP'
	
svnchanged_noconv = %x{svnlook changed #{REPOS} -r #{REV}}.chomp
svnchanged=%x{svnlook changed #{REPOS} -r #{REV} | #{iconv_command}}.chomp
	
svnlog = %x{svnlook log #{REPOS} -r #{REV} | #{iconv_command}}
svnlog_noconv = %x{svnlook log #{REPOS} -r #{REV}}
	
if (svnlog == svnlog_noconv && svnchanged == svnchanged_noconv)
  charset = 'us-ascii'
else
  charset = 'iso-2022-jp'
end
	
msgid = "<#{Time.new.to_f}%#{fromaddr}>"
	
require 'net/smtp'
Net::SMTP.start(smtpserver, 25) { |smtp|
  smtp.send_mail <<EndOfMail, fromaddr, *tolist
From: #{svnauthor} <#{fromaddr}>
To: #{toaddr}
Subject: #{REPOS} r#{REV}
Date: #{date}
Message-ID: #{msgid}
X-Svn-Repos: #{REPOS}
Content-Type: text/plain; charset=#{charset}
Mime-Version: 1.0
	
Author: #{svnauthor}
Date: #{svndate}
New Revision: #{REV}
	
Modified:
#{svnchanged}
	
Log:
#{svnlog}
	
EndOfMail
}

ところでencodingやcharsetやらの話してるときにlanguageの話を混ぜられると参るんだけどなんとかなんねーかな。たとえばshineやmakeなんて単体で出されたら日本語か英語かわかんねーって。kachi make hikiwakeって並んでるのとnice make loveと並んでるのとで前者は日本語に見えるし、後者は英語に見えるよおれは。

あとm17nとi18nとをごっちゃにされても参る。gettext方面の話してないときはm17nのことだと思ってりゃいいんだろうか。

本日のリンク元
アンテナ
その他のリンク元
検索

トップ «前の日記(2007-06-16) 最新 次の日記(2007-06-18)» 編集

謎 queue & status

Powered by 早起き生活
[Powered by OpenBSD] [Powered by たん清] [やる気のないサイト] Valid HTML 4.01 Strict Page Rank Checker [VALID RSS!] RSS feed meter for http://triaez.kaisei.org/~kaoru/diary/