<HTML>
<HEAD>
<TITLE>
Utilities Project - Perforce Public Depot
</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<P>
<A NAME="toc"></A>
<h2>
<sub><a href="../../index.html">Perforce Public Depot</a></sub><br>
Perforce Utilities Project
<br>
</H2>
<P>
<TABLE BORDER=0>
<TR>
<TD VALIGN=TOP>
<B>
<UL>
<LI><A HREF="#about">About This Project
</A>
<LI><A HREF="#browsers">Depot Browsers
</A>
<LI><A HREF="#convert">Conversion Scripts
</A>
<LI><A HREF="#daemons">Review Daemons
</A>
</UL>
<TD VALIGN=TOP>
<B>
<UL>
<LI><A HREF="#triggers">Pre-Submit Triggers
</A>
<LI><A HREF="#diffmrg">Diffing and Merging
</A>
<LI><A HREF="#defect">Defect Tracking
</A>
<LI><A HREF="#compat">Compatibility Aids
</A>
</UL>
</TABLE>
<B>
<LI><A HREF="#misc">Miscellany
</A>
</CENTER>
<br>
<br>
<br>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="about"></A>
<H2>About This Project
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<TABLE CELLPADDING=5%>
<TD VALIGN=TOP>
<B>Content</B></TD>
<TD VALIGN=TOP>
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.
</TD>
</TR><TR>
<TD VALIGN=TOP>
<B>Curator</B></TD>
<TD VALIGN=TOP>
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.
<p>
Until a curator is found, you may request to have your submitted
changes integrated into this project by emailing Perforce staff at
<A HREF="mailto:info@perforce.com">info@perforce.com</A>.
</TD>
</TR>
</TABLE>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="browsers"></A>
<H2>Depot Browsers
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<DL>
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/perfbrowse">
//public/perforce/utils/perfbrowse/...
</A></CODE></B><DD>
<DD>
<B>perfbrowse</b>.
Shows depot hierarchies, changelists, filelogs, file contents, diffs, etc.
There's a
<a href=perfbrowse/perfbrowse.perl@P99.1>
99.1-compatible</a> version and a
<a href=perfbrowse/perfbrowse.perl@P98.2>
98.2-compatible</a> version.
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/p4db">
//public/perforce/utils/p4db/...
</A></CODE></B><DD>
<DD>
<B>P4DB</b>.
Based on <b>perfbrowse</b>, with added features, including
labels associated with files,
file content viewer with annotated deltas,
HTML file viewer,
and The Great Submit Race.
</DL>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="convert"></A>
<H2>Conversion Scripts
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="daemons"></A>
<H2>Review Daemons
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="triggers"></A>
<H2>Pre-Submit Triggers
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<P>
<DL>
<DT>
<B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/triggers">
//public/perforce/utils/triggers/...
</A></CODE></B>
<DD>
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
<a href="/guest/jeff_bowles/jab.html">
Jeff Bowles</a>
and <A HREF="/guest/wes_peters/pcp.html">Wes Peters</A>.
<P>
<table border=1>
<tr>
<td><b>Script Name</b><td><b>Status<sup>*</sup></b><td><center><b>Description</b></center></tr>
<tr>
<td>
<B><A HREF="triggers/Jobs.pl">
Jobs.pl
</A></B>
<td><img src="triggers/smiley.gif">
<td>
Example trigger to enforce a rule "submissions must be associated
with a job.".
<tr>
<td>
<B><A HREF="triggers/Jobs.sh">
Jobs.sh
</A></B>
<td><img src="triggers/smiley.gif">
<td>
Similar to above, but contributed by <A HREF="/guest/wes_peters/pcp.html">Wes Peters</A>
and written in Unix "shell". <i>Takes a different approach to the problem,
running "p4 fixes" to determine whether you're fixing something with this submission.</i>
<tr>
<td>
<B><A HREF="triggers/CheckC.pl">
CheckC.pl
</A></B>
<td><img src="triggers/afraid.gif">
<td>
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.
<p><i>(For example, if "//depot/<u>x</u>/<u>y</u>/z.c"
exists, this won't allow you to create a file named "//depot/<u>X</u>/<u>Y</u>/one.c".)</i>
<tr>
<td>
<B><A HREF="triggers/Pairs.pl">
Pairs.pl
</A></B>
<td><img src="triggers/smiley.gif">
<td>
Example trigger to enforce a rule "files of suffix .x/.y need to be checked
in as pairs".
<tr>
<td>
<B><A HREF="triggers/Binary.pl">
Binary.pl
</A></B>
<td><img src="triggers/smiley.gif">
<td>
Example trigger to enforce a rule "submissions of .gif must binary files
and .sh files should be text and...."
<tr>
<td>
<B><A HREF="triggers/simple.cmd">
simple.cmd
</A></B>
<td><img src="triggers/teaching.gif">
<td>
Classroom example of writing a trigger using the Windows/NT command shell,
a.k.a. "a <i>.cmd</i> script". (It checks that "Bug:" is included in the change
description.) Doesn't do a lot, but gets the idea across.
</table>
<p>
<sup>*</sup>How to interpret the "Status" field:
<ul><li>a smiley face means "it's probably
simple enough to use without any worries that it'll corrupt or slow down anything" ;
<li>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" ;
<li>and "under construction" means just that - you can look, you can
make copies, but it's getting reworked at the moment.
</ul>
</DL>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="diffmrg"></A>
<H2>Diffing and Merging
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<DL>
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/emacs_mrg">
//public/perforce/utils/emacs_mrg/...
</A></CODE></B><DD>
<DD>
Some emacs lisp code to make editing merges in p4 easier.
</DL>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="defect"></A>
<H2>Defect Tracking
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="compat"></A>
<H2>Compatibility Aids
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<DL>
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/emacs">
//public/perforce/utils/emacs/...
</A></CODE></B><DD>
<DD>
Simple Perforce-Emacs integration.
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/emacs_mrg">
//public/perforce/utils/emacs_mrg/...
</A></CODE></B><DD>
<DD>
Some emacs lisp code to make editing merges in p4 easier.
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/c4">
//public/perforce/utils/c4/...
</A></CODE></B><DD>
<DD>
<B>c4</B>. A CVS-like frontend to <b>p4</b>.
<P><DT><B>
<A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/aegis">
//public/perforce/utils/aegis/...
</A></CODE></B><DD>
<DD>
Aegis-like wrappers to <b>p4</b>.
</DL>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
<A NAME="misc"></A>
<H2>Miscellany
</H2>
<TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
Back to Table of Contents</A></TD></TR>
</TABLE>
<!------------------------------------------------------------------>
<br><br><br>
<!------------------------------------------------------------------>
<P>
<TABLE CELLSPACING=0 BORDER=0 WIDTH=100%>
<TR>
<TD WIDTH=15% BGCOLOR=FFCC66 ALIGN=LEFT VALIGN=CENTER>
<FONT SIZE="-2">
Copyright ©<br>
1998, 1999<br>
<a href="http://www.perforce.com">Perforce Software</a><br>
</FONT>
</TD>
<TD WIDTH=70% BGCOLOR=FFCC66 ALIGN=CENTER>
<FONT SIZE="-2">
You're browsing a file stored as<br>
<code>$Id: //guest/laura_wingerd/perforce/utils/index.html#5 $</code><br>
in the
<A HREF=http://public.perforce.com/public/index.html>Perforce Public Depot</A>.
</FONT>
</TD>
<TD WIDTH=15% BGCOLOR=FFCC66 ALIGN=RIGHT>
<FONT SIZE="-2"><A HREF="#toc">
Back to<BR>Table of<BR>Contents</A></TD></TR>
</FONT>
</TD>
</TR>
</TABLE>
<!------------------------------------------------------------------>
</BODY>