wiki:PerforcePlugin

Version 21 (modified by anonymous, 8 years ago) (diff)

change latest version available

Perforce Plugin for Trac

Description

This is a plugin for Trac (0.9 or 0.10) which enables Perforce to be used instead of Subversion for the VersioningSystemBackend.

(See Trac ticket [trac-ticket:257 #257] for more information)

Features

The plugin now supports most of the features that the Subversion backend supports and should be able to handle reasonably large Perforce repositories.

In particular the plugin so far supports:

  • 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.

History

The plugin was originally based on work from Christian Boos on the TracMercurial plugin, Jason Parks and Thomas Tressieres.

The plugin has recently undergone a major reworking 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.

Download/Installation

The latest version (0.4.3) can be found here.

Sources

The latest developmental version can be browsed or downloaded.

The branch for trac-0.9 support can also be browsed or downloaded.

Tagged releases can be browsed here.

Requirements

The PerforcePlugin has been tested against Perforce 2002.2, 2005.1 and 2005.2 servers.

Installation

  1. Download and install the requirements (see above).
  1. Build the .egg file (if building from source)
    Run:
    $ python setup.py bdist_egg
    
  1. 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
      
      Or:
      $ python setup.py install
      

Configuring Trac

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 = p4://user:password@perforce:1666/path_of_depot?unicode=0 or 1

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:

[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.

Bugs/Feature requests

Existing bugs and feature requests for the PerforcePlugin are here.

If you have an issues, create a new ticket.

Todo

This is a brief list of some of the future work that needs to be done.

  • Replication of Trac tickets to Perforce jobs (ala P4DTI) (#625)
  • 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.
  • Improve performance of initial cache population for large repositories (#630)
  • Reduce configuration requirements to a single string such as 'p4://user:password@host:port'. (#632)
  • Per-user authentication and authorisation (#635)
  • Auto-detection of Unicode Perforce servers (#634)

Recent Changes

[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.

Feedback

Are you using perforce plugin?
  • Yes, it's usefull. (ttressieres, amaury, kdeloach, Archon810)
  • No, it's useless.
  • No, I don't need it.
  • I can't get the thing to work! (noodles101, ingomuellernet)

  • You don't have permission to vote. You may need to login.

Contributors

Thanks to:

Attachments (4)

Download all attachments as: .zip