2010-12-27
リポジトリの作成を自動化したい
過去の日記id:sikakura:20101124で、rksyngさんにコメントいただいた内容をまとめておきたいと思います。
リポジトリの自動作成については、http://www.redmine.org/wiki/1/Automating_repository_creationに情報が
あるので、基本的にこの手順に従うのですが、私の環境ではうまく動作しなかった&もう少し詳細な手順がほしい
ということでまとめてみます。
概要レベルの手順は以下の通りです。
- Redmineに管理者でログインして、管理>設定>リポジトリで、リポジトリ管理用のWebサービスを有効にします。
- http.confの内容を編集し、/sysに対するアクセス権を設定します。
- コマンドラインからreposman.rbを実行します。
- reposman.rbを定期的に実行するように設定します。
1の手順では、リポジトリ管理用のWebサービスの有効化とAPIキーの設定ですが、以下の図の赤く囲まれた部分を設定します。
チェックボックスにチェックを入れ、APIキーを入力します。ここで入力したAPIキーは、手順の3番で使用します。
2の手順では、Webサービスを利用可能にするために、/sysに対する権限付与を行います。
具体的には、
<Location /sys> Order deny,allow Allow from 192.168.0.1 Deny from all </Location>
というようにhttp.confに記載します。IPアドレスは適宜変更してください。
3の手順では、reposman.rbを実行します。
私の環境では、Gドライブ直下にBitNamiでRedmineをインストールしていますので、
G:\BitNami\apps\redmine\extra\svn\reposman.rbにありました。
以下のようにコマンドプロンプトから実行します。
私が躓いた箇所としては、--redmine-hostに指定するのが本当にホスト名ではなく、Redmineにブラウザからアクセスする際のURLを指定するという部分でした。
ruby reposman.rb --svn-dir=G:\BitNami\repo --redmine-host=http://192.168.0.1:9999/redmine --key=HaLV7axxA5V4
上のように実行すればOKなはずですが、以下のようなエラーがでます。
unable to create G:\BitNami\repo\test1 : undefined method `uid' for nil:NilClass
どうやらtest1というプロジェクト用のリポジトリ作成の時点でエラーが発生しているようです。
uidというメソッドが無いためにエラーが発生していると思われます。
reposman.rbを眺めてみると、208行目〜220行目には、以下のように書かれています。
def set_owner_and_rights(project, repos_path, &block) if RUBY_PLATFORM =~ /mswin/ yield if block_given? else uid, gid = Etc.getpwnam($svn_owner).uid, ($use_groupid ? Etc.getgrnam(project.identifier).gid : Etc.getgrnam($svn_group).gid) right = project.is_public ? 0775 : 0770 yield if block_given? Find.find(repos_path) do |f| File.chmod right, f File.chown uid, gid, f end end end
なんとなく、if文がWindows用、else文がそれ以外用といった感じです。
RUBY_PLATFORMでWindowsプラットフォームの判定がうまくいってないようです。
以前のコメントでの対応では、else文をコメントアウトして対応したのですが、
今回はif文を書き換えてみます。
変更前
if RUBY_PLATFORM =~ /mswin/ yield if block_given? else
変更後
if RUBY_PLATFORM =~ /(:?mswin|mingw)/ yield if block_given? else
私の環境ではRUBY_PLATFORMは、i386-mingw32と返ってきましたので、上のように対応してみました。
これで動作するはずです。
ちなみに、svnadminコマンドにパスが通ってないとまたエラーになりますので、ご注意を。
4の手順では、3のコマンドプロンプトで実行した内容をバッチファイルにして、Windowsのタスクで実行させます。
リポジトリの作成は大して大変ではありませんが、サーバの管理を開放せずに、
それぞれのリーダがプロジェクトを作成する環境では必要かなと思いました。
- 12 http://pipes.yahoo.com/pipes/pipe.info?_id=242f50e5030d8e9e73ce52013bcbf820
- 2 http://www.google.co.jp/m?ie=Shift_JIS&q=redmine+必須+チケット
- 2 http://www.google.co.jp/search?hl=ja&q=redmine+setenv.bat&lr=lang_ja
- 2 http://www.google.co.jp/search?q=jdk1.5+jconsole&source=ig&hl=ja&rlz=&aq=f&aqi=&aql=&oq=&gs_rfai=
- 2 http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=VBA+LDAP
- 1 http://d.hatena.ne.jp/keyword/Redmine
- 1 http://d.hatena.ne.jp/notify-NotifyUser_POST_NG_CATEGORY?aHR0cDovL2QuaGF0ZW5hLm5lLmpwL3Npa2FrdXJhLzIwMTAwNzI2LzEyODAxMDc5MDA=
- 1 http://k.hatena.ne.jp/keywordblog/redMine?date=20101201
- 1 http://reader.livedoor.com/reader/
- 1 http://search.goo.ne.jp/web.jsp?MT=vmware-cmd+バックアップ&FR=10&from=next