[[PageOutline]]
= Trac =
[[TitleIndex(TipAndDoc/project/trac,format=group)]]
== special wiki pages ==
* ページの編集そのものがTracの挙動に対して影響する物
* InterMapTxt
* InterWikiの設定
* PageTemplates
* 新しいページを作る際のひな形
* RecentChanges
* 最近更新されたページリスト
* TitleIndex
* wikiページリスト
== links ==
* [http://sakito.jp/python/trac.html Trac構築メモ : 紹介マニア]
* [http://d.hatena.ne.jp/kanu-orz/20100921/1285038921 チケットとカスタムクエリの日付表示フォーマットを変える - almost nearly dead] => #32
* [http://d.hatena.ne.jp/ohgui/20090528/1243528476 TracLightningでプロジェクト毎に違うCSS - 大食雑記]
* [http://d.hatena.ne.jp/ohgui/20100811/1281533285 TracBrowserがSVNの巨大なChangesetを処理しきれない場合へのフェイルセーフ - 大食雑記]
* see also [http://hackmylife.net/2007/02/trac-1.html Tracサイトのロゴを変えたい - hack my life]
{{{
commonを指定すると、グローバルの/usr/share/trac/htdocsを見に行って、
プロジェクトホーム/htdocsを見に行くときは、site/画像ファイル名と書いてあげれば良いことを発見。
}}}
== install Trac 0.12 ==
* 0.12からデフォルトでローカライズされているが、[http://www.i-act.co.jp/project/products/products.html インタアクト株式会社]のtrac-jaでは更にデフォルトのWikiページ等が日本語化されている。
* 方針として、aptitudeで十分なパッケージはaptitudeから導入する
* [http://blog.ciklone.com/2010/05/14/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9Ftrac%E3%82%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%81%99%E3%82%8B/ インストールしたTracを日本語化する - ciklone blog | Webベースバグ管理・バージョン管理システム]
=== Dependencies ===
* sudo aptitude install -R -y python-setuptools
* sudo aptitude install -R -y python-subversion
* sudo aptitude install -R -y python-pygments
* sudo easy_install pytz
* sudo easy_install Genshi
* Trac 0.12はGenshi 0.6以上を必要とするが、aptitudeから導入出来るのはpython-genshi => 0.5.1-2ubuntu1なため
* sudo easy_install Babel
* aptitude install python-pybabelで導入できる0.9.4でも動作するが、[trac:wiki:TracInstall#OtherPythonPackages 公式]ではBabel 0.9.5以上と書かれているため。
=== clean install with original Trac-0.12.tar.gz ===
* wget http://ftp.edgewall.com/pub/trac/Trac-0.12.tar.gz
* ~/Trac-0.12$ python setup.py compile_catalog -f
* ~/Trac-0.12$ sudo python setup.py install
=== clean install with Trac-0.12.ja1.zip ===
* sudo aptitude install -R -y unzip
* wget http://www.i-act.co.jp/project/products/downloads/Trac-0.12.ja1.zip
* ~/Trac-0.12$ sudo python setup.py install
* trac-jaではcomlie_catalogは指定しなくよい(暗黙的にcompileされる)
=== upgrade from 0.11 to 0.12 ===
* インストールまでは上記と同様
* /static/trac/へのリンクを切り替える
* ex) sudo rm /var/www/trac; sudo ln -s /usr/local/lib/python2.6/dist-packages/Trac-0.12.ja1-py2.6.egg/trac/htdocs /var/www/trac
* sudo trac-admin /path/to/var/trac/test/ upgrade
* sudo trac-admin /path/to/var/trac/test/ wiki upgrade
== Access control with Apache ==
* see also #11
* 閲覧するだけであればGETメソッドを使うため、trac-adminで権限制御を行うほかにApache側でLimitを用いて編集を拒否することが出来る。
{{{
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from all
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.fcgi
Order Allow,Deny
Allow from all
Order Allow,Deny
Deny from all
}}}
* Orderディレクティブは省略時(デフォルト)では「Order Deny,Allow」と解釈されるので、以下のように略記できる。 => wiki:TipAndDoc/network/httpd#Accesscontrol
{{{
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.fcgi
Deny from all
}}}
== MultipleRepository ==
* wiki:TracRepositoryAdmin
* https://twitter.com/mittyorz/status/21069493593706496
* マルチリポジトリの時って、authz_module_nameはどうなるんだろう。整合性がとれない気がするんだが…
* https://twitter.com/mittyorz/status/21079250299781121
* 複数のリポジトリを、マルチリポジトリ機能を使って一つのtracでリポジトリブラウザから見るとき、各リポジトリを列挙するのと、そのリポジトリ達の中のデフォルトのリポジトリを表示するのは、排他なんだな…
* https://twitter.com/mittyorz/status/21079947758014464
* 「.alias = hogehoge」しないと、一番最初に記述されたのがデフォルトのリポジトリと見なされるのかな
* デフォルトのリポジトリ(「.alias = hogehoge」)は、svn-hookを使わなくてもsyncされる
* デフォルトのリポジトリを、マルチリポジトリの他のリポジトリに(trac.iniで)切り替えると、(trac-adminなしで)up-to-dateになる
== .tracignore ==
* [trac:ticket:8348 project index shows hidden folders like ".svn"]
* tar.gz>trac/web/main.py
{{{
#!python
def get_tracignore_patterns(env_parent_dir):
"""Return the list of patterns from env_parent_dir/.tracignore or a
default pattern of `".*"` if the file doesn't exist.
"""
path = os.path.join(env_parent_dir, '.tracignore')
try:
lines = [line.strip() for line in read_file(path).splitlines()]
except IOError:
return ['.*']
return [line for line in lines if line and not line.startswith('#')]
def get_environments(environ, warn=False):
"""Retrieve canonical environment name to path mapping.
The environments may not be all valid environments, but they are good
candidates.
"""
(snip)
# Filter paths that match the .tracignore patterns
ignore_patterns = get_tracignore_patterns(env_parent_dir)
paths = [path[:-1] for path in paths if path[-1] == '/'
and not any(fnmatch.fnmatch(path[:-1], pattern)
for pattern in ignore_patterns)]
env_paths.extend(os.path.join(env_parent_dir, project) \
for project in paths)
}}}