WikiFarm を動かす
2004-08-05
さくらインターネットでの検証の続きで、BitChannelが動くかどうかを確認してみた。 せっかくなので、WikiFarmを試してみる。 farm.rb でエラーがでて悩まされたけど、どうにか動くようになった。
以下がその差分。 以前のコードでは、 cvs import で空のリポジトリを作ってから、 cvs add で一つ一つのファイル(ページ)を追加していたんだけど、 wc.cvs_add にて -d オプションによる CVSROOT の指定がされていないために エラーになっていた。 本当は、 wc.cvs_add にて -d をつけるように修正するべきなのかもしれないけど、 技量が追いつかなかったので、cvs import で一括してページをインポートするようにした。 cvs add では -kb オプションを使っているようだけど、この方法だとこのオプションは使われない。 とりあえず動いているけど、何か悪影響があるかもしれないや。
bash-2.05b$ cvs diff -u lib/bitchannel/farm.rb
Index: lib/bitchannel/farm.rb
===================================================================
RCS file: /src/bitchannel/lib/bitchannel/farm.rb,v
retrieving revision 1.7
diff -u -r1.7 farm.rb
--- lib/bitchannel/farm.rb 23 Jun 2004 15:28:41 -0000 1.7
+++ lib/bitchannel/farm.rb 5 Aug 2004 01:43:54 -0000
@@ -287,6 +287,12 @@
end
Dir.mkdir "#{tmpprefix}/cache"
initialize_working_copy tmpprefix, id
+ repo = Repository.new({
+ :cmd_path => @cmd_path,
+ :wc_read => "#{tmpprefix}/wc.read",
+ :wc_write => "#{tmpprefix}/wc.write",
+ :cachedir => "#{tmpprefix}/cache",
+ }, id)
repo.properties = prop
File.rename tmpprefix, prefix(id)
ensure
@@ -296,17 +302,15 @@
end
def initialize_working_copy(tmpprefix, id)
- wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @logger)
+ wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @cmd_path, @logger)
Dir.mkdir wc.dir
wc.chdir {
log = 'BitChannelFarm auto import'
- wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
Dir.glob("#{@skeleton}/*").select {|n| File.file?(n) }.each do |path|
name = decode_filename(File.basename(path))
wc.write name, File.read(path)
- wc.cvs_add name
- wc.cvs_checkin name, 'checkin from skeleton'
end
+ wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
}
Dir.chdir(tmpprefix) {
wc.cvs '-d',@repository, 'co', '-d','wc.read', id
@@ -429,7 +433,7 @@
end
def prefix
- File.dirname(@wc_read)
+ File.dirname(@wc_read.dir)
end
end # class Repository
追記
空のファイルで import し、それぞれのファイルを個別に add しているのは、BitChannelCommentに書かれている revision 0 問題に対応するためかもしれない。
追記 その2
CVSROOT が分からないところは、cvs import した直後に cvs co すればいいのか。 こんな感じかな。
@@ -296,11 +302,12 @@
end
def initialize_working_copy(tmpprefix, id)
- wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @logger)
+ wc = CVSWorkingCopy.new(id, "#{tmpprefix}/tmp", @cmd_path, @logger)
Dir.mkdir wc.dir
wc.chdir {
log = 'BitChannelFarm auto import'
wc.cvs '-d',@repository, 'import', '-m',log, id, 'bcfarm', 'start'
+ wc.cvs '-d',@repository, 'co', '-d','.', id
Dir.glob("#{@skeleton}/*").select {|n| File.file?(n) }.each do |path|
name = decode_filename(File.basename(path))
wc.write name, File.read(path)