Perforce Plugin for Trac
This is a plugin for Trac (0.9, 0.10 or 0.11) which enables Perforce to be used instead of Subversion for the Versioning Control System. The plugin now supports most of the features of Subversion and should be able to handle reasonably large Perforce repositories.
See Trac ticket trac:#257 for more information.
- Browsing source code in a Perforce repository via the TracBrowser.
- Specifying revisions using change number, file revision, date or label.
- Viewing the change history of a file or directory using TracRevisionLog.
- Performing diffs between any two files or two directories.
- Displaying submitted changes in the TracTimeline.
- Caching TracChangeset information in Trac's database.
- Using the TracSearch page to search change descriptions.
- Unicode enabled Perforce servers.
- Displaying Perforce file attributes: an undocumented Perforce feature similar to Subversion properties.
- Efficient handling of large repository files.
- Multi-threaded web servers, eg Apache with mod_python on Windows.
For a list of features that still need to be implemented see this list.
The plugin has been reworked by Lewis Baker to try to improve handling of large repositories and large files. The plugin was also ported to use PyPerforce to take advantage of its support for Python's unicode strings, multi-threading and streaming of results.
This plugin needs a new maintainer and is available for adoption.
If you have an issues, create a new ticket.
The latest version (0.4.3) can be found here (for Trac 0.11 only).
- Python 2.4 or later
- PyPerforce 0.3a1 or later
- PyProtocols 0.9.3 or later
- Recent version of Trac 0.10dev trunk
- A working Trac installation, see TracInstall for general information
- A Perforce server
The PerforcePlugin has been tested against Perforce 2002.2, 2005.1 and 2005.2 servers.
- Download and install the requirements (see above).
- Build the .egg file (if building from source). Run:
$ python setup.py bdist_egg
- Install the .egg file
- For per-project installation copy the .egg file to the <TRAC_ENV>/plugins directory.
- For a global installation run:
$ easy_install path/to/TracPerforce-0.4.3-py2.4.egg
$ python setup.py install
You need to edit your <TRAC_ENV>/conf/trac.ini file.
In the [trac] section you need to add:
[trac] repository_type = perforce repository_dir = / [perforce] port = perforce:1666 user = p4trac password = secret unicode = 0
One recommended Perforce configuration is to add a user with read access and a login with no expiry, then setup your Trac configuration with this user and use the Perforce ticket as the password.
If you installed trac globally you also need to enable the PerforcePlugin in the [components] section of your trac.ini file:
[components] p4trac.* = enabled
Finally, restart your Trac web server.
Note: Loading a page that uses the plugin for the first time can take a long time while the plugin populates the initial changeset cache, depending on the size of the Perforce repository. See #630 for more info.
This is a brief list of some of the future work that needs to be done.
- Replication of Trac tickets to Perforce jobs, eg P4DTI (#625)
- Add support for Trac 0.11 (#2338)
- Add a 'fixes' property to changesets that lists tickets/jobs fixed by that change (#628)
- Detect 'move' file actions (ie 'copy' and 'delete' of same file) (#626)
- Detect 'move' and 'copy' of entire directories (#627)
- Add an 'integrations' property to changesets/files that lists integrated revisions merged in that revision (#629)
- Fix 'created_rev' to report the revision of last 'edit', skipping 'copy' or 'move' revisions (#633)
- Better support for detecting modified change descriptions and updating changeset cache (use "p4 logger"?).
- Per-user authentication and authorisation (#635)
- Auto-detection of Unicode Perforce servers (#634)
Alternatively, Trac can access Perforce through a git wrapper. Here's roughly what you need to do:
- Install and set up a git-p4 repository: download, HowTo1, HowTo2
- Install GitPlugin and use the git repository you set up above as your new Trac repository.
- Create a minutely cronjob that executes "git p4 rebase" for your repository.
- 7853 by ttressieres on 2010-04-16 16:55:36
to delete directory trac-0.11 (must be in sub-directory branches)
- 7852 by ttressieres on 2010-04-16 16:51:49
misplaced trac-0.11 branch
- 7851 by ttressieres on 2010-04-16 16:48:03
Branch PerforcePlugin trunk to branches/trac-0.11 for 0.11 maintenance.
Trunk is being updated for 0.12.
(24.3 KB) -
added by ttressieres 11 years ago.
first version of plugin
- pyprotocols-0.9.3-py2.7-win32.egg (82.1 KB) - added by anonymous 4 years ago.
- PyPerforce-0.4-py2.7-win32.egg (400.8 KB) - added by anonymous 4 years ago.
- TracPerforce-0.5dev-py2.7.egg (51.1 KB) - added by anonymous 4 years ago.
Download all attachments as: .zip