close
Warning:
Error with navigation contributor "LoginModule"
- Timestamp:
-
Apr 26, 2012, 4:07:51 PM (13 years ago)
- Author:
-
trac
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v1
|
v2
|
|
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. || |
27 | 26 | ||`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. || |
28 | 27 | ||`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. || |
29 | 28 | |
30 | | The `name` attribute and one of `alias` or `dir` are mandatory. All others are optional. |
| 29 | A repository `name` and one of `alias` or `dir` attributes are mandatory. All others are optional. |
31 | 30 | |
32 | 31 | After adding a repository, the cache for that repository must be re-synchronized once with the `trac-admin $ENV repository resync` command. |
… |
… |
|
41 | 40 | 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. |
42 | 41 | |
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. |
| 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. |
44 | 43 | {{{ |
45 | 44 | #!ini |
… |
… |
|
49 | 48 | project.type = svn |
50 | 49 | project.url = http://example.com/svn/project |
| 50 | project.hidden = true |
| 51 | |
51 | 52 | lib.dir = /var/repos/lib |
52 | 53 | lib.description = This is the secondary library code. |
53 | 54 | lib.type = svn |
54 | 55 | lib.url = http://example.com/svn/lib |
| 56 | |
55 | 57 | .alias = project |
56 | | .hidden = true |
57 | 58 | }}} |
58 | 59 | Note that `name.alias = target` makes `name` an alias for the `target` repo, not the other way around. |
… |
… |
|
127 | 128 | 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. |
128 | 129 | |
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. |
| 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 | }}} |
130 | 153 | |
131 | 154 | === Per-request synchronization === #PerRequestSync |
… |
… |
|
139 | 162 | |
140 | 163 | 1. Remove the default repository specification from the `[trac] repository_dir` option. |
141 | | 1. Add the "main" repository as a named repository. |
| 164 | 1. Add the main repository as a named repository. |
142 | 165 | 1. Re-synchronize the main repository. |
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. |
| 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. |
146 | 169 | |
147 | 170 | == Migration from a single-repository setup (Mercurial) == #MigrationMercurial |
… |
… |
|
150 | 173 | 1. Upgrade to the latest version of the TracMercurial plugin. |
151 | 174 | 1. Remove the default repository specification from the `[trac] repository_dir` option. |
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. |
| 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. |
155 | 178 | |
156 | 179 | == Troubleshooting == |