トップ «前の日記(2003-11-18) 最新 次の日記(2003-11-20)» 編集

ピックはどこだ。



2003-11-19 [長年日記]

_ [univ]増産

どうして帰る帰るといって帰れないのかなぁと思っていたのだが、 研究室にいればいるほど仕事が増えていくことに気がついた。

そしていろいろやってる間に趣味でやりたかったこととか思い出して、 やってると、相乗効果でどんどん泥沼に。

警戒しやう。

_ [misc]雨

研究室から雨の中を帰宅。 なぜか傘もささずに。

風邪でもひいたらどうするつもりなんだろうか…。

_ [linux]リポジトリ全壊

今日の夕方くらいに PIV プログラム用に設定した subversion で構築されたリポジトリが全壊していることが発覚した。 いちおうフルバックアップをとっていたのだが、 元に戻してもアクセスできない。

そこで本格的にバックアップとその他の設定をみなおすことにした。

まず複数ユーザで使うために

# /usr/sbin/vigr

して

svnuser:x:1111:user1,user2,user3

svnadmin でリポジトリを作ったユーザに使用ユーザを追加する。

そして、

# cp /usr/bin/svnserve /usr/bin/svnserve-umask

とかしたうえで、/usr/bin/svnserve を

#!/bin/sh
umask 002
/usr/bin/svnserve-umask $*

みたいな感じにして書き込み時に umask 002 とかしてやる。

ここまでで複数人でリポジトリにアクセスと変更ができるようになった。

で、次はバックアップだが、hot-backup.py.in が tools/backup/ 以下に あってフルバックアップがとれるはずなのだが、これが

Beginning hot backup of '#repo_dir#'.
Traceback (innermost last):
  File "/tmp/subversion/tools/backup/hot-backup.py.in", line 93, in ?
      infile, outfile, errfile = os.popen3(svnlook + " youngest " + repo_dir)
      AttributeError: popen3

とか言われてうまく動いてくれない。 どうやら #repo_dir#/hooks/ 以下に置いて使うように設計されているようだ。 こちらとしては単発でバックアップを取りたいので、 とりあえず差分バックアップを取る方向で

# /usr/bin/svnadmin dump #repo_dir# > /var/backup/dumpfile.dump

とかしてリポジトリのリビジョンを力の限り差分としてとってやる。 なんだか不自然かつ無意味、応用性なしだがとりあえずよしとする。 差分バックアップの利点は db をバックアップしないので db を更新して動かなくなった場合でも復元が可能だとか どこかに書いてあった気がするし。 ちなみに

#/usr/bin/svnadmin load #repo_dir# < /var/backup/dumpfile.dump

とすることで書き出したリポジトリの内容を復旧することができる。 もうちょい容量が増えたり問題が出るまでこのままで。

これで少しは安心して subversion が使えるようになった。

_ [linux]post-commit

いろいろ設定したので、次はコミットがあったら mail とか来るように したくなった。

これも tools/hook-scripts に commit-email.pl.in というスクリプトが ついているのだが、sendmail の設定をしないといけないっぽいし、 qmail で代用するためには頭を使わないといけないようなので、パス。

で、#repo_dir#/hooks/ 以下に post-commit という名前のスクリプトを 作って、 subversion不徹底入門 を参考に ruby のスクリプトを不本意ながら使うことにした。 中身は

#!/usr/bin/ruby

REPOS=ARGV[0]
REV=ARGV[1].to_i

fromaddr='svn@example.com'
toaddr='svn-committers@example.com'

svnauthor=%x{svnlook author #{REPOS} rev #{REV}}.chomp!
svndate=%x{svnlook date #{REPOS} rev #{REV}}.chomp!
svnchanged=%x{svnlook changed #{REPOS} rev #{REV}}.chomp!
svnlog=%x{svnlook log #{REPOS} rev #{REV}}.chomp!
svndiff=%x{svnlook diff #{REPOS} rev #{REV}}.chomp!

#commit-email.pl "$REPOS" "$REV" toaddr
require 'net/smtp'
Net::SMTP.start( 'localhost', 25 ) {|smtp|
smtp.send_mail <<EndOfMail, fromaddr, toaddr
From: #{fromaddr}
To: Subversion committers:;
Subject: FSIJ Subversion commit #{REPOS} #{REV}

Subversion committed to #{REPOS} #{REV}
#{svnauthor}
#{svndate}

changed:
#{svnchanged}

log:
#{svnlog}

#{svndiff}

EndOfMail
}

open("/svn/log/#{REV}", "w") do |fp|
fp.puts svnauthor
fp.puts svndate
fp.puts svnchanged
fp.puts svnlog
end

なのだが、

svnauthor=%x{svnlook author #{REPOS} rev #{REV}}.chomp!
svndate=%x{svnlook date #{REPOS} rev #{REV}}.chomp!
svnchanged=%x{svnlook changed #{REPOS} rev #{REV}}.chomp!
svnlog=%x{svnlook log #{REPOS} rev #{REV}}.chomp!
svndiff=%x{svnlook diff #{REPOS} rev #{REV}}.chomp!

の部分だけは修正してある。 元々は author とか date とかが後に書いてあったのだが、 仕様の変更のためか、0.32.1 ではこれを先に書くように変わっている。

そして実際にコミットして mail を受け取ってみたのだが、 windows で使うことが前提だったためコミット時のコメントの日本語部分が化ける。

どうやら sjis をそのまま吐いているようなのだが、

# echo -e 'hogehoge'

とかしてやってもうまく見えない。

しばらくがんばってみたがどうにもうまくいかないのであきらめた。 subversion ってマルチバイトの取り扱いとか多言語化とかどうなってるんだろう…。


2002|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|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|

body | book | boot | bsd | cml | darts | debian | diary | food | game | hns | home | hpcmips | js | life | linux | mac | maid | mds | misc | music | mutt | netbsd | palm | pda | perl | piv | program | qmail | room | satori | stationery | tdiary | tv | univ | unix | vi | vim | willcom | win | windows | work

最近のつっこみ :

  1. YAA (04-23)
  2. gerywerry (04-17)
  3. うみそだち (04-04)
  4. поиск удаленной работы предложение удаленной работы биржа удаленная работа для дизайнеров программистов менеджеров оптимизаторов рекламщиков сео-специалистов копирайтеров (03-18)
  5. продвижение сайтов реклама в Москве реклама сайтов (03-15)

アンテナ情報の取得は antenna.lirs または Pick Antenna(アンテナ)から、お願いします。

written by 無月 霞