close
Warning:
Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.
- Timestamp:
-
Aug 18, 2013, 5:03:59 PM (13 years ago)
- Author:
-
trac
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
|
v2
|
v3
|
|
| 24 | 24 | ||The `dir` attribute specifies the location of the repository in the filesystem. It corresponds to the value previously specified in the option `[trac] repository_dir`. The `alias` and `dir` attributes are mutually exclusive. || |
| 25 | 25 | ||`hidden` ||When set to `true`, the repository is hidden from the repository index page in the source browser. Browsing the repository is still possible, and links referencing the repository remain valid. || |
| | 26 | ||`name` ||The `name` attribute specifies the leading path element to the repository. || |
| 26 | 27 | ||`type` ||The `type` attribute sets the type of version control system used by the repository. Trac supports Subversion out-of-the-box, and plugins add support for many other systems. If `type` is not specified, it defaults to the value of the `[trac] repository_type` option. || |
| 27 | 28 | ||`url` ||The `url` attribute specifies the root URL to be used for checking out from the repository. When specified, a "Repository URL" link is added to the context navigation links in the source browser, that can be copied into the tool used for creating the working copy. || |
| 28 | 29 | |
| 29 | | A repository `name` and one of `alias` or `dir` attributes are mandatory. All others are optional. |
| | 30 | The `name` attribute and one of `alias` or `dir` are mandatory. All others are optional. |
| 30 | 31 | |
| 31 | 32 | After adding a repository, the cache for that repository must be re-synchronized once with the `trac-admin $ENV repository resync` command. |
| … |
… |
|
| 40 | 41 | The main advantage of specifying repositories in `trac.ini` is that they can be inherited from a global configuration (see the [wiki:TracIni#GlobalConfiguration global configuration] section of TracIni). One drawback is that, due to limitations in the `ConfigParser` class used to parse `trac.ini`, the repository name is always all-lowercase. |
| 41 | 42 | |
| 42 | | The following example defines two Subversion repositories named `project` and `lib`, and an alias to `project` as the default repository. This is a typical use case where a Trac environment previously had a single repository (the `project` repository), and was converted to multiple repositories. The alias ensures that links predating the change continue to resolve to the `project` repository. |
| | 43 | The following example defines two Subversion repositories named `project` and `lib`, and a hidden alias to `project` as the default repository. This is a typical use case where a Trac environment previously had a single repository (the `project` repository), and was converted to multiple repositories. The alias ensures that links predating the change continue to resolve to the `project` repository. |
| 43 | 44 | {{{ |
| 44 | 45 | #!ini |
| … |
… |
|
| 48 | 49 | project.type = svn |
| 49 | 50 | project.url = http://example.com/svn/project |
| 50 | | project.hidden = true |
| 51 | | |
| 52 | 51 | lib.dir = /var/repos/lib |
| 53 | 52 | lib.description = This is the secondary library code. |
| 54 | 53 | lib.type = svn |
| 55 | 54 | lib.url = http://example.com/svn/lib |
| 56 | | |
| 57 | 55 | .alias = project |
| | 56 | .hidden = true |
| 58 | 57 | }}} |
| 59 | 58 | Note that `name.alias = target` makes `name` an alias for the `target` repo, not the other way around. |
| … |
… |
|
| 128 | 127 | Note that calling `trac-admin` in your Subversion hooks can slow down the commit and log editing operations on the client side. You might want to use the [trac:source:trunk/contrib/trac-svn-hook contrib/trac-svn-hook] script which starts `trac-admin` in an asynchronous way. The script also comes with a number of safety checks and usage advices which should make it easier to set up and test your hooks. There's no equivalent `trac-svn-hook.bat` for Windows yet, but the script can be run by Cygwin's bash. |
| 129 | 128 | |
| 130 | | See the [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks section about hooks] in the Subversion book for more information. Other repository types will require different hook setups. |
| 131 | | |
| 132 | | Git hooks can be used in the same way for explicit syncing of git repositories. Add the following to `.git/hooks/post-commit`: |
| 133 | | {{{#!sh |
| 134 | | REV=$(git rev-parse HEAD) |
| 135 | | trac-admin /path/to/env changeset added <my-repository> $REV |
| 136 | | }}} |
| 137 | | |
| 138 | | For Mercurial, add the following entries to the `.hgrc` file of each repository accessed by Trac (if [trac:TracMercurial] is installed in a Trac `plugins` directory, download [source:plugins/0.13/mercurial-plugin/tracext/hg/hooks.py hooks.py] and place it somewhere accessible): |
| 139 | | {{{#!ini |
| 140 | | [hooks] |
| 141 | | ; If mercurial-plugin is installed globally |
| 142 | | commit = python:tracext.hg.hooks.add_changesets |
| 143 | | changegroup = python:tracext.hg.hooks.add_changesets |
| 144 | | |
| 145 | | ; If mercurial-plugin is installed in a Trac plugins directory |
| 146 | | commit = python:/path/to/hooks.py:add_changesets |
| 147 | | changegroup = python:/path/to/hooks.py:add_changesets |
| 148 | | |
| 149 | | [trac] |
| 150 | | env = /path/to/env |
| 151 | | trac-admin = /path/to/trac-admin |
| 152 | | }}} |
| | 129 | See the [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks section about hooks] in the Subversion book for more information. Other repository types will require different hook setups. Please see the plugin documentation for specific instructions. |
| 153 | 130 | |
| 154 | 131 | === Per-request synchronization === #PerRequestSync |
| … |
… |
|
| 162 | 139 | |
| 163 | 140 | 1. Remove the default repository specification from the `[trac] repository_dir` option. |
| 164 | | 1. Add the main repository as a named repository. |
| | 141 | 1. Add the "main" repository as a named repository. |
| 165 | 142 | 1. Re-synchronize the main repository. |
| 166 | | 1. Set up post-commit and post-revprop-change hooks on the "main" repository, and set `[trac] repository_sync_per_request` to an empty value. |
| 167 | | 1. Add an alias to the main repository as the default repository (by leaving out the the `name`, e.g. `.alias = main`). This ensures that all links predating the migration still resolve to the main repository. |
| 168 | | 1. Repeat steps 2, 3 and 4 to add other "named" repositories as needed. |
| | 143 | 1. Set up post-commit and post-revprop-change hooks on the main repository, and set `[trac] repository_sync_per_request` to an empty value. |
| | 144 | 1. Add a hidden alias to the main repository as the default repository. This ensures that all links predating the migration still resolve to the main repository. |
| | 145 | 1. Repeat steps 2, 3 and 4 to add other (named) repositories as needed. |
| 169 | 146 | |
| 170 | 147 | == Migration from a single-repository setup (Mercurial) == #MigrationMercurial |
| … |
… |
|
| 173 | 150 | 1. Upgrade to the latest version of the TracMercurial plugin. |
| 174 | 151 | 1. Remove the default repository specification from the `[trac] repository_dir` option. |
| 175 | | 1. Add the main repository as a named repository. |
| 176 | | 1. Add an alias to the main repository as the default repository (by leaving out the the `name`, e.g. `.alias = main`). This ensures that all links predating the migration still resolve to the main repository. |
| 177 | | 1. Repeat step 3 to add other "named" repositories as needed. |
| | 152 | 1. Add the "main" repository as a named repository. |
| | 153 | 1. Add a hidden alias to the main repository as the default repository. This ensures that all links predating the migration still resolve to the main repository. |
| | 154 | 1. Repeat step 3 to add other (named) repositories as needed. |
| 178 | 155 | |
| 179 | 156 | == Troubleshooting == |