wiki:TipAndDoc/project/trac

Version 23 (modified by mitty, 13 years ago) (diff)

moved to repository

Trac

special wiki pages

  • ページの編集そのものがTracの挙動に対して影響する物
  • see also Tracサイトのロゴを変えたい - hack my life
    commonを指定すると、グローバルの/usr/share/trac/htdocsを見に行って、
    プロジェクトホーム/htdocsを見に行くときは、site/画像ファイル名と書いてあげれば良いことを発見。
    

install Trac 0.12

  • 0.12からデフォルトでローカライズされているが、インタアクト株式会社のtrac-jaでは更にデフォルトのWikiページ等が日本語化されている。
  • 方針として、aptitudeで十分なパッケージはaptitudeから導入する

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でも動作するが、公式ではBabel 0.9.5以上と書かれているため。

clean install with original Trac-0.12.tar.gz

clean install with Trac-0.12.ja1.zip

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

  • 閲覧するだけであればGETメソッドを使うため、trac-adminで権限制御を行うほかにApache側でLimitを用いて編集を拒否することが出来る。
    <Directory />
            Options FollowSymLinks
            AllowOverride None
            Order Deny,Allow
            Deny from all
    </Directory>
    
    ScriptAlias /trac       /usr/share/trac/cgi-bin/trac.fcgi
    <Location /trac>
            Order Allow,Deny
            Allow from all
            <LimitExcept GET>
                    Order Allow,Deny
                    Deny from all
            </LimitExcept>
    </Location>
    
    • Orderディレクティブは省略時(デフォルト)では「Order Deny,Allow」と解釈されるので、以下のように略記できる。 => wiki:TipAndDoc/network/httpd#Accesscontrol
      ScriptAlias /trac       /usr/share/trac/cgi-bin/trac.fcgi
      <Location /trac>
              <LimitExcept GET>
                      Deny from all
              </LimitExcept>
      </Location>
      

.tracignore

  • tar.gz>trac/web/main.py
    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)