[Hiki-dev:00602] Re: repository backend

Back to archive index

KOMATSU Shinichiro koma2****@ms*****
2004年 12月 6日 (月) 00:50:38 JST


小松です。

From: Kazuhiko <kazuh****@fdiar*****>
Subject: [Hiki-dev:00601] Re: repository backend
Date: Sun, Dec 05, 2004 at 11:06:53PM JST

> > (4) ここまでやると、plugin の cvs.rb と svn.rb は
> >     1つにまとめてしまえることがわかったので、
> >     これらはまとめた上で plugin/00default.rb に入れてしまった。
> (1)〜(3) については概ね賛成なのですが、(4) はちょっとやりすぎな気もします。

ここはちょっと迷ったところで、
実は最初に書いた時には cvs.rb と svn.rb をまとめたものを
repos.rb という別の plugin にしようと思っていました。

    http://straycat.ms.u-tokyo.ac.jp/~koma2/daymemo2/?date=20041122#p01

ただ、これだと

・ 今まで cvs.rb や svn.rb を使っていた人が
   repos.rb を有効にするのを忘れるとハマる。

・ リポジトリ管理を使いたくない人は 
   repos_type を設定しなければいい。

ということで、後方互換性を確保するには
00default.rb に入れるのがよかろうと思ったわけです。

私も「ここまでやっていいかな?」というのは
迷ったところなので、最終的にはかずひこさんにお任せします。

> add_update_proc {
>   updating_mail if****@conf*****_on_update
>   Hiki::Util::create_repos(@conf.repos_type, @conf.repos_root, @conf.data_path).commit(@page)
> }
> 
> add_delete_proc {
>     Hiki::Util::create_repos(@conf.repos_type, @conf.repos_root, @conf.data_path).delete(@page)
> }
> 
> ↑このへんで、クラスメソッド (というか module function) が出てくるのが
> ちょっと嫌かも...

そうなんですよねぇ。
雑多なものは hiki/util.rb に入れてるみたいなんで
こうしてみたのですが、
よく考えると hiki/util.rb に入れたからと言って
Hiki::Util に入れないといけないというわけではないんですよね。

というわけで、create_repos はこんな感じで
Hiki::Util の外に出すというのはどうでしょう?

Index: hiki/util.rb
===================================================================
RCS file: /cvsroot/hiki/hiki/hiki/util.rb,v
retrieving revision 1.17
diff -u -r1.17 util.rb
--- hiki/util.rb	15 Nov 2004 14:45:23 -0000	1.17
+++ hiki/util.rb	5 Dec 2004 15:49:43 -0000
@@ -215,3 +215,18 @@
     end
   end
 end
+
+# Create repository backend
+def create_repos(repos_type, repos_root, data_path)
+  case repos_type
+  when 'cvs'
+    require 'hiki/repos/cvs'
+    return Hiki::ReposCvs.new(repos_root, data_path)
+  when 'svn'
+    require 'hiki/repos/svn'
+    return Hiki::ReposSvn.new(repos_root, data_path)
+  else
+    require 'hiki/repos/default'
+    return Hiki::ReposDefault.new(repos_root, data_path)
+  end
+end

-- 
┏━━━━━━━━━━━━━━━━━━━━━━┓
                小松  晋一朗            
            koma2****@ms*****
            koma2****@momon*****
     http://straycat.ms.u-tokyo.ac.jp/~koma2/
┗━━━━━━━━━━━━━━━━━━━━━━┛



Hiki-dev メーリングリストの案内
Back to archive index