jigen, Hirotomo Kunimatsu
Tokyo, Japan
mailto: microformat hcard
Page 3 / 4«1234»
top

複数リポジトリを1つのTracで

trac_big

スポンサードリンク

Tracではリポジトリは1つしか扱えない。例えば【1つのリポジトリを複数のTracで利用する】の事は出来るようだが、逆に【複数リポジトリを1つのTracで動かす】のは色々検索したが見つからなかった。

例えば、社内に複数のリポジトリがあってそれを1つのTracで管理したい場合。こんなのありそうだが・・・Trac 0.10xとかで機能追加されるのかな(?)。これがまた私の方でこのようなケースを自分で作り出してしまって困ったので…。無理やりではあるがSubversionのリポジトリ側で統合をしてみた。クレバーじゃぁないが、忘れそうなのでメモ。ちなみに、外部からのアクセスに関してはsvnserve、Tracで使うWebサーバはApacheだった場合を想定です。
なんかクレバーな方法あったら教えてください。m(_ _)m

大まかな説明

下記にあるシェルスクリプトをcronで回す。流れは以下。

  • 統合させたい複数リポジトリをダンプ。
  • 【統合リポジトリ】を作成する(しなおす)。
  • ダンプしたファイルを【統合リポジトリ】にダンプをインポート。
  • Tracにて【統合リポジトリ】を読み込み直す。
  1. #!/bin/sh
  2. SVN_USER=user
  3. SVN_PASS=password
  4. SVN_REPO=/path/to/svn-basic
  5. TMPLOG=/path/temppath
  6. SVNSERVE_CONF=/path/to/svnserve-conf
  7. TRAC_PATH=/path/to/trac
  8. TRAC_PROJECT=(project1 project2 project2)
  9. TRAC_ALL_PROJECT=all
  10. APACHE_USER=www-data
  11. APACHE_GROUP=www-data
  12. # 統合するリポジトリをダンプする。
  13. for i in ${TRAC_PROJECT[*]} ; do
  14. svnadmin dump $SVN_REPO/$i > $TMPLOG/$i.log
  15. done
  16. # 作業フォルダを全て削除。
  17. rm -fr $SVN_REPO/all
  18. rm -fr $TMPLOG/all
  19. # 新リポジトリを作成して、confを入れる。
  20. svnadmin create $SVN_REPO/$TRAC_ALL_PROJECT
  21. cp -fR $SVNSERVE_CONF/* $SVN_REPO/$TRAC_ALL_PROJECT/conf/
  22. # 統合するリポジトリを入れるフォルダを作成。
  23. cd $SVN_REPO
  24. svn \
  25. –username $SVN_USER \
  26. –password $SVN_PASS \
  27. co \
  28. file://$SVN_REPO/$TRAC_ALL_PROJECT $TRAC_ALL_PROJECT
  29. cd $SVN_REPO/all
  30. for i in ${TRAC_PROJECT[*]} ; do
  31. svn mkdir $i
  32. done
  33. svn commit -m “Dump Message”
  34. # 作業フォルダを削除。
  35. rm -fr $TMPLOG/$TRAC_ALL_PROJECT
  36. # 旧リポジトリを入れ込む。
  37. for i in ${TRAC_PROJECT[*]} ; do
  38. svnadmin load $SVN_REPO/$TRAC_ALL_PROJECT –parent-dir $i \
  39. < $TMPLOG/$i.log
  40. done
  41. # リポジトリを復旧
  42. svnadmin recover $SVN_REPO/$TRAC_ALL_PROJECT
  43. # 権限設定を変更する。
  44. chown -R $APACHE_USER:$APACHE_PASS $SVN_REPO/$TRAC_ALL_PROJECT
  45. # trac変更を読み込ませる。
  46. trac-admin $TRAC_PATH resync

設定項目

SVN_USER
Subversionを操作するユーザ
SVN_PASS
Subversionを操作するユーザパスワード
SVN_REPO
元になるSubversionリポジトリパス
TMPLOG
ダンプの一時ファイルを作るフォルダ
SVNSERVE_CONF
Svnserveのコンフィグファイル(あらかじめ作っておく)。
TRAC_PATH
Tracのパス。
TRAC_PROJECT
統合するリポジトリ名(配列で入れる)
TRAC_ALL_PROJECT
統合リポジトリ名
APACHE_USER
Apacheユーザ
APACHE_GROUP
Apacheユーザパスワード

問題点

リビジョン番号
3つの複数リポジトリを統合した場合、Tracで表示されるRevisionは3つのリポジトリを足した番号になる。例えば以下のような感じ。
project1 (rev3) — Tracだと –> (rev3)
project2 (rev5) — Tracだと –> (rev8)
project3 (rev2) — Tracだと –> (rev10)
リアルタイムには反映できない
シェルで定時で同期を取るのでリアルタイムには反映されない。また、リポジトリを更新する際にソース表示関連のもの(リポジトリを利用する機能)は使えなくなる。大体長くて5分~10分程度なので3時間毎でもいいかも知れない。

参照させて頂いたサイト


2006/04/26 03:56:49200603:56

TracのWebDB+Press記事

2006-04-25 15-18-01

Trac! Trac! すげ~! と言ってたら・・・。今月号のWebDB+Press誌の特集は、Eclipse + Subversion + Tracの特集が載ってる!やっぱりソフトウェア開発の方々とか使ってるのねぇ~~。なんだか一人で興奮してるんじゃないのは良かったけど、自分がアホっぽく思えて恥ずかしくなってきた…w

内容はざっくりとしか読んでないけど、「Tracを使ってプロジェクト内のワークフローを作ろう」っぽい。Eclipseとかは自分で使わないのが残念。


2006/04/25 15:37:49200615:37

Tracインストール

trac_big

前のエントリでTracをインストールしたので、その時のメモを追加エントリー。ちなみに、Debianにいれた場合です。tracのバックグラウンドDBはsqliteを、シンタックスハイライトはEnscriptを利用した。

必要モジュールをインストール

Trac実は結構他に依存しているモジュールが多いのでそちらを先にインストールしておく。

Python
バージョン 2.3 以上。aptの場合は【python-devel】も入れておく方が無難。
Subversion
バージョン 1.0 以上。Pythonのバインディングも必要。aptだと【python-svn】
ClearSilver
バージョン 0.9.3 以上。Pythonのバインディングも必要。aptだと【python-clearsilver】
SQLite
バージョン 2.8.x か 3.x。Pythonのバインディングも必要。aptだと【python-sqlite】
  1. apt-get install python python-devel python-xml
  2. apt-get install subversion python-svn
  3. apt-get install clearsilver-dev python-clearsilver
  4. apt-get install sqlite python-sqlite

tracモジュールのインストール

さて、実際のtracモジュールのインストールですが、インタアクト株式会社さんが日本語化を行っているモジュールがあるのでそちらをダウンロードしてきてそれを解凍。解凍したフォルダ内で以下を行えばtrac自体のセットアップは完了。

  1. python ./setup.py install

プロジェクトを作成

まずはsubversionのリポジトリを作成。元々リポジトリがある場合はここは飛ばしておくれやす。

  1. svnadmin create /var/svn/repo

tracは出来たので今度はtrac-adminというツールがtrac側で用意されているので、このコマンドをtracのプロジェクトファイルの場所とinitenvオプションを付けて実行する。

  1. trac-admin /var/trac/doc initenv

そうすると、入力を促すプロンプトが出てくるので【プロジェクト名】【レポジトリパス】を設定する。それ以外はデフォルトでOKなのでそのままEnter。そうするとCongratulations!と表示される。また以下のコマンドを実行するとtrac独自のスタンドアロンサーバが起動するので動作確認をする事ができる(以下の例はport 8000番で起動)。

  1. tracd –port 8000 /var/trac/doc

Apacheの設定

次はWebサーバの設定。tracはmod_pythonでの動作を推奨しているが、実は私の環境では動かなかった。
そのためFastCGIを使う事にした。また以下はVirtualHostを利用しての設定。

  1. <virtualhost *>
  2. ScriptAlias /123net /usr/share/trac/cgi-bin/trac.fcgi
  3. DefaultInitEnv TRAC_ENV /var/trac/doc
  4. <location />
  5. AuthType Basic
  6. AuthName “Trac User”
  7. AuthUserFile /var/trac/doc/.htusers
  8. Require valid-user
  9. location>
  10. virtualhost>

Basic認証用のファイルを作って、Apacheを再起動して終了!

  1. htpasswd -c /var/trac/doc/.htusers “Trac User” administrator
  2. password :
  3. re-type :
  4. /etc/init.d/apache2 restart

2006/04/24 22:48:49200622:48
Page 3 / 4«1234»
アリ「ここからメニューだすよ」
アリ「ごちそういっぱーい」
アリ「腹へったー」
アリ「働けー働けー♪」