Perforce Public Depot
Perforce Utilities Project

  • Miscellany

  • About This Project

    Back to Table of Contents
    Content The Perforce Utilities Project is a collection of programs and scripts that integrate Perforce with a variety of software development tools and environments, and/or provide alternative interfaces to the Perforce SCM system.
    Curator This project is in need of one or more responsible, knowledgeable curators. Eventually we'll split these utilities up into separate projects, depending on their activity and growth. If you have a particular interest in any or all of this project, and would like to volunteer as a curator, please email us.

    Until a curator is found, you may request to have your submitted changes integrated into this project by emailing Perforce staff at

    Depot Browsers

    Back to Table of Contents

    perfbrowse. Shows depot hierarchies, changelists, filelogs, file contents, diffs, etc.

    P4DB. Based on perfbrowse, with added features, including labels associated with files, file content viewer with annotated deltas, HTML file viewer, and The Great Submit Race.

    Conversion Scripts

    Back to Table of Contents

    Review Daemons

    Back to Table of Contents

    Pre-Submit Triggers

    Back to Table of Contents

    Perforce Release 99.1 introduced server support for pre-submit triggers. Here are some example scripts that can be used as triggers in a Perforce 99.1 (or later) server. These scripts were written and contributed by Jeff Bowles.

    Script NameStatus*
    Description Example trigger to enforce a rule "submissions must be associated with a job.". Similar to above, but contributed by Wes Peters and written in Unix "shell". Takes a different approach to the problem, running "p4 fixes" to determine whether you're fixing something with this submission. A script to notice when you're creating new files (or integrating to a new branch) and the directory name you're writing the [new] file to isn't the same case as an existing directory name.

    (For example, if "//depot/x/y/z.c" exists, this won't allow you to create a file named "//depot/X/Y/one.c".) Example trigger to enforce a rule "files of suffix .x/.y need to be checked in as pairs". Example trigger to enforce a rule "submissions of .gif must binary files and .sh files should be text and...."
    simple.cmd Classroom example of writing a trigger using the Windows/NT command shell, a.k.a. "a .cmd script". (It checks that "Bug:" is included in the change description.) Doesn't do a lot, but gets the idea across.

    *How to interpret the "Status" field:

    • a smiley face means "it's probably simple enough to use without any worries that it'll corrupt or slow down anything" ;
    • a scared face means "you probably want to read the comments at the top of the script - this might need localization/tailoring or might have performance implications you want to investigate before deploying on your production Perforce server" ;
    • and "under construction" means just that - you can look, you can make copies, but it's getting reworked at the moment.

    Diffing and Merging

    Back to Table of Contents

    Some emacs lisp code to make editing merges in p4 easier.

    Defect Tracking

    Back to Table of Contents

    Compatibility Aids

    Back to Table of Contents

    Simple Perforce-Emacs integration.

    Some emacs lisp code to make editing merges in p4 easier.

    c4. A CVS-like frontend to p4.

    Aegis-like wrappers to p4.


    Back to Table of Contents

    Copyright ©
    1998, 1999
    Perforce Software
    You're browsing a file stored as
    $Id: //guest/perforce_software/utils/index.html#7 $
    in the Perforce Public Depot.
    Back to
    Table of