close
Warning:
Can't synchronize with repository "(default)" (Unsupported version control system "darcs": Can't find an appropriate component, maybe the corresponding plugin was not enabled? ). Look in the Trac log for more information.
- Timestamp:
-
2014-01-26 00:59:52 (11 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. |
… |
… |
|
107 | 108 | /usr/bin/trac-admin /path/to/env changeset added "$1" "$2" |
108 | 109 | }}} |
| 110 | Note: Ubuntu doesn't seem to like /usr/bin/trac-admin, so just use: |
| 111 | {{{#!sh |
| 112 | #!/bin/sh |
| 113 | export PYTHON_EGG_CACHE="/path/to/dir" |
| 114 | trac-admin /path/to/env/ changeset added "$1" "$2" |
| 115 | }}} |
109 | 116 | On Windows (`post-commit.cmd`): |
110 | 117 | {{{#!application/x-dos-batch |
… |
… |
|
127 | 134 | 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 | 135 | |
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. |
| 136 | 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. |
| 137 | |
| 138 | Git hooks can be used in the same way for explicit syncing of git repositories. Add the following to `.git/hooks/post-commit`: |
| 139 | {{{#!sh |
| 140 | REV=$(git rev-parse HEAD) |
| 141 | trac-admin /path/to/env changeset added <my-repository> $REV |
| 142 | }}} |
| 143 | |
| 144 | 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): |
| 145 | {{{#!ini |
| 146 | [hooks] |
| 147 | ; If mercurial-plugin is installed globally |
| 148 | commit = python:tracext.hg.hooks.add_changesets |
| 149 | changegroup = python:tracext.hg.hooks.add_changesets |
| 150 | |
| 151 | ; If mercurial-plugin is installed in a Trac plugins directory |
| 152 | commit = python:/path/to/hooks.py:add_changesets |
| 153 | changegroup = python:/path/to/hooks.py:add_changesets |
| 154 | |
| 155 | [trac] |
| 156 | env = /path/to/env |
| 157 | trac-admin = /path/to/trac-admin |
| 158 | }}} |
130 | 159 | |
131 | 160 | === Per-request synchronization === #PerRequestSync |
… |
… |
|
139 | 168 | |
140 | 169 | 1. Remove the default repository specification from the `[trac] repository_dir` option. |
141 | | 1. Add the "main" repository as a named repository. |
| 170 | 1. Add the main repository as a named repository. |
142 | 171 | 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. |
| 172 | 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. |
| 173 | 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. |
| 174 | 1. Repeat steps 2, 3 and 4 to add other "named" repositories as needed. |
146 | 175 | |
147 | 176 | == Migration from a single-repository setup (Mercurial) == #MigrationMercurial |
148 | | The following procedure illustrates a typical migration from a Mercurial single-repository setup to multiple repositories. Please note that at the time of writing, no initial resynchronization or any hooks are necessary for Mercurial repositories - see #9485 for more information. |
| 177 | The following procedure illustrates a typical migration from a Mercurial single-repository setup to multiple repositories. Please note that at the time of writing, no initial resynchronization or any hooks are necessary for Mercurial repositories - see [trac:ticket:9485 #9485] for more information. |
149 | 178 | |
150 | 179 | 1. Upgrade to the latest version of the TracMercurial plugin. |
151 | 180 | 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. |
| 181 | 1. Add the main repository as a named repository. |
| 182 | 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. |
| 183 | 1. Repeat step 3 to add other "named" repositories as needed. |
155 | 184 | |
156 | 185 | == Troubleshooting == |