Memo/Subversion/trac

https://dexlab.net:443/pukiwiki/index.php?Memo/Subversion/trac
 

trac(WEBでプロジェクト管理)

Tips

post-commitスクリプトの引数

  • trac 0.10.4
    /var/svn/SandBox 70

チケットのインポート

Tracの通知メールの差出人が化ける

  • v0.10.4では解消
  • v0.9.6で確認

MIMEMultipartメールなのだが、Becky 2.30でみると差出人が化けて表示されるようだ。
Fromの部分だけエンコーディングされていないのが原因。
デフォルトでは以下のようにプロジェクト名+差出人となっている。

  • /usr/lib/python2.3/site-packages/trac/Notify.py
    msg['From'] = '%s <%s>' % (projname, self.from_email)
  • プロジェクト名を表示しないように変更
    • /usr/local/src/trac-0.9.6-ja-1/trac/Notify.py 2006-02-16 10:47:21.000000000 +0900
      +++ Notify.py   2007-03-14 15:21:24.000000000 +0900
      @@ -132,7 +132,7 @@
               msg['X-Trac-Project'] =  projname
               msg['X-URL'] =  self.config.get('project','url')
               msg['Subject'] = Header(self.subject, 'utf-8')
      -        msg['From'] = '%s <%s>' % (projname, self.from_email)
      +        msg['From'] = '%s' % (self.from_email)
               msg['Sender'] = self.from_email
               msg['Reply-To'] = self.replyto_email
               msg['To'] = rcp
      ----
      # service httpd graceful

Tracからのメールが飛ばない場合

  • /var/log/maillog
    Mar 13 22:04:49 ts01x036 postfix/smtpd[30163]: connect from localhost.localdomain[127.0.0.1]
    Mar 13 22:04:49 ts01x036 postfix/smtpd[30163]: lost connection after CONNECT from localhost.localdomain[127.0.0.1]
    Mar 13 22:04:49 ts01x036 postfix/smtpd[30163]: disconnect from localhost.localdomain[127.0.0.1]
  • trac.iniでログを出力するように変更し、apacheを再起動
    22:04:49 Trac[web_ui] ERROR: Failure sending notification on change to ticket #21: (-2, 'Name or service not 
    known')
    Traceback (most recent call last):
    
  • 名前が見つからないらしい。
    • /etc/hostsに追加したら直った。pingで確認すると良い。

ログ出力

  • trac.iniを書き換えて、apacheを再起動させるとlog/にログファイルができる。
    # vi conf/trac.ini
    ----
    [logging]
    log_file = trac.log
    log_level = DEBUG
    log_type = file
    ----
    # service httpd graceful

source:リンクで画像を表示しない

標準では画像ファイル(.png, .gif, .jpg)へリンクすると自動的に展開し、表示されます。
これを抑制したい場合、末尾に/を付けると良いようです。
ちなみにリンク[]では使えませんでした。イリーガルな使い方のようです。

source:trunk/〜/foo.jpg/

英語版Tracから日本語版Tracへの移行

  1. trac-admin wiki upgrade
  2. DBに含まれている文字列は日本語化されないので以下を実施
  • レポート表示(上部メニューの「チケットを見る」)の日本語化
    • 日本語版からダンプ
      sqlite> .output report_ja.sql
      sqlite> .dump report
      sqlite> .exit
    • ダンプしたSQLをちょっと編集し、create tableを削除と既存のレポート削除
      filereport_ja.sql
    • 更新
      $ su
      # sqlite -init report.sql /var/trac/mappl/db/trac.db
      Loading resources from report.sql
      SQLite version 2.8.16
      Enter ".help" for instructions
      sqlite> .exit
      

SQLite 2.x -> 3.x。または 3.x -> 2.xへ移行

SQLiteの3.xと2.xにはファイルフォーマットに互換性が無い。以下のエラーの場合は、データベースのバージョンが異なるので、エクスポート/インポートしなくてはいけない。

Unable to open database "trac.db": file is encrypted or is not a database
  1. エクスポート
    • 2.x -> 3.x
      # cd /trac-repository/db
      # sqlite trac.db .dump | sqlite3 trac.db.3
    • 3.x -> 2.x
      # cd /trac-repository/db
      # sqlite3 trac.db .dump | sqlite trac.db.2
  2. 移動
    # mv trac.db.x trac.db

キャッシュディレクトリを明示的に指定する

「/etc/init.d/httpd restart」だとエラー、「service httpd restart」だと正常に起動する場合の対策。

起動ユーザのホームディレクトリにキャッシュディレクトリを作成しようとする模様。
「/root/.python-eggs」にキャッシュディレクトリを作成しようとして失敗している。

  • 明示的にキャッシュディレクトリを指定(予め /var/www/.python-eggs ディレクトリは作成し、chown apache. /var/www/.python-eggsしておく)
    <Location /projects>
      ...
      SetEnv PYTHON_EGG_CACHE /var/www/.python-eggs
    </Location>

権限のグループ化

  • 権限をまとめてグループにして、グループ単位で設定することができます。
    # trac-admin /path/to permission add developers TICKET_CREATE LOG_VIEW TICKET_MODIFY
    # trac-admin /path/to permission add spy developers
  • TICKET_CREATE LOG_VIEW TICKET_MODIFY権限を持つdevelopersグループを作り、それをspyユーザに設定しています。

ページに目次(アウトライン)を付ける

v0.9からPageOutline?マクロが標準添付されたので、ページの先頭でこれを記述すれば良い。

[[PageOutline]]

その他標準マクロは、tracのヘルプの「wiki/WikiMacros?」に記述がある。

wikiマクロ集

  • プロジェクト全体にインストール
    /usr/share/trac/wiki-macros/
  • プロジェクト毎にインストール
    /var/trac/SandBox/wiki-macros/
  • ページは/で階層構造をとる事ができる。以下の外部プラグインで実現可能。
    • ParentWiki?.py
      親wikiページの表示
      wget -O ParentWiki.py http://trac.edgewall.org/attachment/wiki/MacroBazaar/ParentWiki.py?format=raw
  • SubWiki? 子のwikiページの表示
    wget -O SubWiki.py http://trac.edgewall.org/attachment/wiki/MacroBazaar/SubWiki.3.py?format=raw

除外ファイル

以下、リポジトリに格納しなくともよいファイル

  • VisualStudio?
    拡張子説明
    *.opt開発環境で使用されるワークスペースのオプションファイル。
    *.clwClassWizard? で使用されるファイル。自動生成される。
    *.ncbコンパイルされないブラウザファイル。自動生成される。
    *.aps現在のリソーススクリプトファイルのバイナリバージョン。
    *.plgプロジェクトログ。コンパイル結果などが記録される。

wikiに「Table of contents」を表示させる

  • ページ先頭付近に以下の1行を追加する
    [[TracGuideToc]]

日本語訳

  • チケットの種類
    defect不具合
    enhancement新機能/拡張
    taskタスク
  • 優先度
    blocker極めて重大
    critical重大
    major
    minor
    trivial最低
  • 操作
    fixed修正済み
    invalid無効
    wontfix修正しない
    duplicate重複
    worksforme再現しない

UTF-8以外のソースコードの表示

pythonの内部コードがUTF-8なので、通常UTF-8のみ表示可能。
JapaneseCodecs?を追加すれば、他文字セットも表示可能になる。

  1. JapaneseCodecs?がインストールされている事
  2. trac.iniの編集
    「/var/trac/sampleproject/conf/trac.ini」の設定を変更
    • EUC-JPの場合
      [trac]
      default_charset = japanese.euc-jp
    • Shift_JISの場合
      [trac]
      default_charset = japanese.shift_jis
    • その他
      default_charset = utf-8
      default_charset = japanese.ms932
      default_charset = japanese.iso-2022-jp

python2.3でsubversionのモジュールが無い時は。

subversionのソースから、以下のようにインストールする。

# configure
# make swig-py
# make install-swig-py
# ln -s /usr/local/lib/svn-python/libsvn /usr/lib/python2.3/site-packages/libsvn
# ln -s /usr/local/lib/svn-python/svn /usr/lib/python2.3/site-packages/svn

Subversion リポジトリに格納しているファイルのエンコード...

Subversion リポジトリに格納しているファイルのエンコードが、ファイルごとに違う場合、svnのmime-type属性にcharsetを追加する。

$ svn propset 'svn:mime-type' 'text/plain; charset=Shift_JIS' *.txt
$ svn propset 'svn:mime-type' 'text/x-csrc; charset=Shift_JIS' *.c

ただし、以下のように[auto-props]では利用できない。「;」と「=」がデリミタとして指定されてる模様。以下のようにすると「charset=Shift_JIS」として登録されてしまう。

*.csv = svn:eol-style=CRLF;svn:mime-type=text/plain;charset=Shift_JIS

mod_pythonを用いる

  • trac.conf
    <Location /var/www/projects/trac.cgi>
       SetHandler mod_python
       PythonHandler trac.web.modpython_frontend
    </Location>
    

複数のプロジェクト用にApacheを設定する

  • fileindex.php
  • パスワードファイル
    /var/lib/trac/trac.htpasswd
  • http://hostname/projects/ や 存在しないプロジェクトにアクセスした場合は「index.html」が表示される。プロジェクト一覧を表示するphpを用意すれば、便利。
# mkdir /var/www/projects
# cp /usr/share/trac/cgi-bin/trac.cgi /var/www/projects/
# cp index.php /var/www/projects/
# mkdir /var/lib/trac
# vi /etc/httpd/conf/trac.conf
----------------------------------------------------------
RewriteEngine on
RewriteRule ^/projects/+$			/projects/index.html [L]
RewriteCond /var/lib/trac/$1			-d
RewriteRule ^/projects/([[:alnum:]]+)(/?.*)	/projects/trac.cgi$2 [S=1,E=TRAC_ENV:/var/lib/trac/$1]
RewriteRule ^/projects/(.*)			/projects/index.html

<Directory "/var/www/projects">
	AllowOverride None
	Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
	AddHandler cgi-script .cgi
	Order allow,deny
	Allow from all
</Directory>

<LocationMatch "/projects/[[:alnum:]]+/login">
	AuthType Basic
	AuthName "trac"
	AuthUserFile /var/lib/trac/trac.htpasswd
	Require valid-user
</LocationMatch>
----------------------------------------------------------
  • RewriteEngine?VirtualHost?毎に必要なので、Includeする
    # vi /etc/httpd/conf/httpd.conf
    ----------------------------------------------------------
    <VirtualHost 対象>
    Include "/etc/httpd/conf/trac.conf"
    </VirtualHost>
    ----------------------------------------------------------
    # svnadmin create --fs-type fsfs /var/svn/testproj
    # trac-admin /var/lib/trac/testproj initenv
    # chown -R apache:apache /var/lib/trac/testproj
    # service httpd restart

スクリプト

  • svnリポジトリ&trac作成
  • basic認証ユーザ作成
  • サンプル構成インポート
    filesvn-scripts.zip

サンプルwiki

リンク


添付ファイル: filesvn-scripts.zip 1610件 [詳細] filePocketWikiMemo 1331件 [詳細] fileTracInstallPlatforms 1203件 [詳細] fileTracMultipleProjects 1214件 [詳細] fileindex.php 1945件 [詳細] filereport_ja.sql 1399件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (61d)