wiki:TipAndDoc/project/trac/repository

MultipleRepository

  • 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になる

0.12 vs 0.12.1

  • 「規定のリポジトリ」の表示のされ方が、Trac 0.12とTrac 0.12.1で異なる
  • trac.ini
    [repositories]
    hoXXXXX.dir = /var/svn/-----/hoXXXXX
    hoXXXXX.type = svn
    hoXXXXX.url = https://ubuntu64/svn/hoXXXXX/
    paYYYYYY.dir = /var/svn/-----/paYYYYYY
    paYYYYYY.type = svn
    paYYYYYY.url = https://ubuntu64/svn/paYYYYYY/
    s0ZZZZZZZ.dir = /var/svn/-----/s0ZZZZZZZ
    s0ZZZZZZZ.type = svn
    s0ZZZZZZZ.url = https://ubuntu64/svn/s0ZZZZZZZ/
    woXYZXYZXYZ.dir = /var/svn/-----/woXYZXYZXYZ
    woXYZXYZXYZ.type = svn
    woXYZXYZXYZ.url = https://ubuntu64/svn/woXYZXYZXYZ/
    
    .alias = paYYYYYY
    
    • Trac-0.12.ja1 ではデフォルトのリポジトリ(規定のリポジトリ)と、一覧が同時に表示される
      TracBrowser with Trac 0.12.ja1
    • Trac-0.12.1.ja1 ではデフォルトのリポジトリのみが表示される
      TracBrowser with Trac 0.12.1.ja1
      • trac/<ProjectName>/browser/<RepositoryName> でアクセスは問題なくできる
  • trac.ini
     .alias = paYYYYYY
    +.hidden = true
    
    • デフォルトのリポジトリを表示しないように設定した場合は、0.12 - 0.12.1で差異はない
      TracBrowser with Trac 0.12.ja1 and ".hidden = true"

Migration from a single-repository setup

before migration

  • 4 repositories and 2 tracs
    1. ls -ld /var/svn/lab/*
      drwxr-x--x 7 root www-data 90 2010-09-19 11:31 /var/svn/lab/lab
      drwxr-x--x 7 root www-data 90 2011-01-02 19:02 /var/svn/lab/lab.test
      drwxr-x--x 7 root www-data 90 2010-12-16 16:37 /var/svn/lab/test
      drwxr-x--x 7 root www-data 90 2010-12-19 22:45 /var/svn/lab/test2
      
    2. ls -ld /var/trac/lab/*
      drwxr-x--x 9 root www-data 124 2009-06-04 16:14 /var/trac/lab/lab
      drwxr-x--x 9 root www-data 124 2010-12-16 17:02 /var/trac/lab/test
      
    • リポジトリとTracのリスト
      subversion repository list trac environment list
    • Tracのリポジトリブラウザとタイムライン
      trac browser with single repository trac timeline with single repository

step by step

  1. remove "repository_dir" from trac.ini
    • diff -u /var/trac/lab/test/conf/trac.ini.20110101 /var/trac/lab/test/conf/trac.ini
      • /var/trac/lab/test/conf/trac.ini

        old new  
        1414[trac] 
        1515authz_file = /path/to/config/files/passwd/svn-authz.lab 
        1616authz_module_name = test 
        17 repository_dir = /var/svn/lab/test 
    • Tracのリポジトリブラウザとタイムラインから、エントリが消える
      trac browser with repository_dir removed trac timeline with repository_dir removed
  2. add "[repositories]" to trac.ini
    • diff -u /var/trac/lab/test/conf/trac.ini.20110101 /var/trac/lab/test/conf/trac.ini
      • /var/trac/lab/test/conf/trac.ini

        old new  
        1111name = test 
        1212url = https://lab.mitty.jp/trac/test/ 
        1313 
         14[repositories] 
         15lab.test.dir = /var/svn/lab/lab.test 
         16lab.test.type = svn 
         17lab.test.url = http://lab.mitty.jp/svn/lab.test/ 
         18test.dir = /var/svn/lab/test 
         19test.type = svn 
         20test.url = http://lab.mitty.jp/svn/test/ 
         21test2.dir = /var/svn/lab/test2 
         22test2.type = svn 
         23test2.url = http://lab.mitty.jp/svn/test2/ 
         24 
        1425[trac] 
        1526authz_file = /path/to/config/files/passwd/svn-authz.lab 
        1627authz_module_name = test 
        17 repository_dir = /var/svn/lab/test 
    • resyncするまではリポジトリの情報が見れない
      trac browser with [repositories] added to trac.ini
  3. resync repositories
    1. sudo trac-admin /var/trac/lab/test/ repository resync "*"
      Resyncing repository history for lab.test...
      3 revisions cached.
      Resyncing repository history for test...
      4 revisions cached.
      Resyncing repository history for test2...
      2 revisions cached.
      Done.
      
    • resync後のリポジトリブラウザとタイムライン
      trac browser with resynced [repositories] trac timeline with resynced [repositories]
    • それまでの「/trunk」ではアクセスが出来なくなる
      trac browser /trunk with resynced [repositories]
    • svn commitしても、リポジトリの情報は更新されない
      • D:\tmp>svn ci lab.test -m " * mkdir 4 for lab.test"
        Adding         lab.test\trunk\4
        
        Committed revision 4.
        
      • 「lab.test」リポジトリはrevisionが「3」のまま
        no change found in trac browser on svn commit
  4. add ".alias = lab.test" to trac.ini
    • diff -u /var/trac/lab/test/conf/trac.ini.20110101 /var/trac/lab/test/conf/trac.ini
      --- /var/trac/lab/test/conf/trac.ini.20110101   2011-01-01 15:24:22.593393957 +0900
      +++ /var/trac/lab/test/conf/trac.ini    2011-01-02 23:00:13.925906625 +0900
      @@ -11,7 +11,19 @@
       name = test
       url = https://lab.mitty.jp/trac/test/
      
      +[repositories]
      
      (snip)
      
      +test2.url = http://lab.mitty.jp/svn/test2/
      +
      +.alias = lab.test
      +
       [trac]
      
      (snip)
      
    • 「規定のリポジトリ」が表示される
      trac browser with '.alias = ' added
      • revisionも「4」に更新される
    • 「/trunk」でのアクセスが復活する
      trac browser /trunk with '.alias = ' added
  5. add ".hidden = true"
    • diff -u /var/trac/lab/test/conf/trac.ini.20110101 /var/trac/lab/test/conf/trac.ini
      --- /var/trac/lab/test/conf/trac.ini.20110101   2011-01-01 15:24:22.593393957 +0900
      +++ /var/trac/lab/test/conf/trac.ini    2011-01-02 23:06:31.585907819 +0900
      @@ -11,7 +11,20 @@
       name = test
       url = https://lab.mitty.jp/trac/test/
      
      +[repositories]
      
      (snip)
      
      +
      +.alias = lab.test
      +.hidden = true
      +
       [trac]
      
      (snip)
      
    • 「規定のリポジトリ」が表示されなくなる
      trac browser with '.hidden = ' added
    • 「/trunk」では、「規定のリポジトリ」の「/trunk」に今まで通りアクセスできる
      trac browser /trunk with '.hidden = ' added
  6. change ".alias" to "test" from "lab.test"
    • diff -u /var/trac/lab/test/conf/trac.ini.20110101 /var/trac/lab/test/conf/trac.ini
      --- /var/trac/lab/test/conf/trac.ini.20110101   2011-01-01 15:24:22.593393957 +0900
      +++ /var/trac/lab/test/conf/trac.ini    2011-01-02 23:08:53.633399243 +0900
      @@ -11,7 +11,19 @@
       name = test
       url = https://lab.mitty.jp/trac/test/
      
      +[repositories]
      
      (snip)
      
      +test2.url = http://lab.mitty.jp/svn/test2/
      +
      +.alias = test
      +
       [trac]
      
      (snip)
      
    • ".alias"を変更することで「規定のリポジトリ」が変更される
      trac browser with '.alias = ' changed trac browser /trunk with '.alias = ' changed
    • タイムラインには変化はない
      trac timeline with '.alias = ' changed
  7. add post-commit to each repositories and symlink trac environment
    1. sudo ln -s /path/to/config/files/svn/hooks/post-commit /var/svn/lab/lab/hooks/
    2. sudo ln -s /path/to/config/files/svn/hooks/post-commit /var/svn/lab/test/hooks/
    3. sudo ln -s /path/to/config/files/svn/hooks/post-commit /var/svn/lab/test2/hooks/
    4. sudo ln -s test /var/trac/lab/lab.test
    5. sudo ln -s test /var/trac/lab/test2
    • ln -sを使って、post-commitが正常に「test」を更新できるようにする
      1. ls -ld /var/trac/lab/*
        drwxr-x--x 9 root www-data 124 2009-06-04 16:14 /var/trac/lab/lab
        lrwxrwxrwx 1 root root       4 2011-01-03 23:28 /var/trac/lab/lab.test -> test
        drwxr-x--x 9 root www-data 124 2010-12-16 17:02 /var/trac/lab/test
        lrwxrwxrwx 1 root root       4 2011-01-03 23:28 /var/trac/lab/test2 -> test
        
    • 副作用として、「test」が三つ表示される
      trac environment list with symlink
    1. /path/to/config/files/svn/hooks/post-commit
      #!/bin/sh
      
      # POST-COMMIT HOOK
      #
      # The post-commit hook is invoked after a commit.  Subversion runs
      # this hook by invoking a program (script, executable, binary, etc.)
      # named 'post-commit' (for which this file is a template) with the
      # following ordered arguments:
      #
      #   [1] REPOS-PATH   (the path to this repository)
      #   [2] REV          (the number of the revision just committed)
      #
      
      (snip)
      
      # Here is an example hook script, for a Unix /bin/sh interpreter.
      # For more examples and pre-written hooks, see those in
      # /usr/share/subversion/hook-scripts, and in the repository at
      # http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
      # http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/
      
      
      REPOS="$1"
      REV="$2"
      
      # "$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf
      
      PROJECT_NAME=`basename $REPOS`
      DIRNAME=`dirname $REPOS`
      SUB_ROOTDIR=`basename $DIRNAME`
      
      export PYTHON_EGG_CACHE="/tmp"
      export TRAC_ENV="/var/trac/${SUB_ROOTDIR}/${PROJECT_NAME}"
      /path/to/config/files/trac/contrib/trac-svn-hook $REPOS $REV
      
    2. /path/to/config/files/trac/contrib/trac-svn-hook
  8. add .tracignore
    1. sudo vim /path/to/config/files/trac/conf/lab.tracignore
      .*
      lab.test
      test2
      
    2. sudo ln -s /path/to/config/files/trac/conf/lab.tracignore /var/trac/lab/.tracignore
    • .tracignoreを追加し、不必要なTracを一覧に表示させない
      trac environment list with symlink and .tracignore
    • 表示はさせないが、URLを知っていればアクセスは出来る

test post-commit

  • post-commitにより、リポジトリの更新はTrac側に通知される
    • D:\tmp>svn ci lab.test -m " * mkdir 5 for lab.test"
      Adding         lab.test\trunk\5
      
      Committed revision 5.
      
    • cat /var/trac/lab/test/log/svn-hooks-lab.test.log
      Changeset 5 added
      OK
      
    • 「lab.test」のrevisionが「5」に更新される
      trac browser cache updated by svn post-commit hook script
Last modified 7 years ago Last modified on Mar 5, 2011 11:30:11 PM

Attachments (24)

Download all attachments as: .zip