- <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.51 [en] (X11; I; Linux 2.2.5-15 i686) [Netscape]">
- <TITLE>SAFARI: CONCEPTION, BIRTH, AND FUTURE DEVELOPMENT OF AN OPEN SOURCE CODE BROWSING SYSTEM</TITLE>
- </head>
- <body BGCOLOR="#FFFFFF">
- yapc Proceedings (June 1999)
- <br>
- <p><b>SAFARI: CONCEPTION, BIRTH, AND FUTURE DEVELOPMENT OF AN OPEN SOURCE CODE BROWSING SYSTEM</b>
- <p>R. B. SLAYMAKER, Jr.
- <br>
- <p><font size=-1> Safari is a web based application
- that provides access to hierarchically organized files (programs, images,
- documents, or other media) stored in file systems, databases or archiving
- systems such as revision control and software configuration management systems.
- Multiple versions of any file can be browsed using meta information such
- as revision number, revision labels, project membership, change
- set numbers, or other methods natural to the structure of the storage system.
- Relative links between documents link to the correct revisions of the
- target documents as determined by the meta information.
- <BR> Safari also provides a standard (GNU Make based) framework
- for integrating analysis and processing tools and making their output easily
- available within the context of the hierarchy the source files are stored
- (and thus presented) in.
- <br> Safari was conceived as a tool
- for publishing automatically extracted documentation for an in-house system,
- using a 3rd party documentation extraction tool (Cocoon). The original
- (0.0) version is a monolithic perl script that grew from the original design
- goals to include source code browsing, syntax highlighting, navigation
- of back revisions, a second documentation extractor (pod2html) and activation
- of #include files to be links to the appropriate file.
- <br> Several key design decisions
- in the 0.0 version were validated in practice, others invalidated. When
- the burden of maintaining and extending the monolithic script grew too
- large, Safari was rewritten and is now headed for a 1.0 version. The 0.5
- version is being released under an open source license in conjunction with
- this paper, and a demonstration web site is being made available for the
- conference.
- <br> This paper outlines the past
- and near future life cycle of Safari: the design decisions, the current
- state, and future directions are all discussed.</font>
-
- <h2><A NAME="Introduction"></A>1. Introduction</h2>
-
- <P>Source code browsing systems allow a developers and
- other interested parties to explore and research bodies of source code.
- To varying extents, they provide analytical information about the
- code base, such as indexes of identifiers,
- meta information such as change logs, labels, file dates and sizes.
- A few are complete web based SCM (Software Configuration Management) or
- RCS (Revision Control System) interfaces.
-
- <P>There are many existing systems that provide these features.
- <A HREF="http://lxr.linux.no/">The Linux Cross Reference project</A>
- [<A HREF="#1">1</A>] provides browsing and indexing of identifiers
- for source code and is used by several high profile open source
- projects and by in-house developers working on proprietary
- code.
-
- <P>The <A HREF="http://www.perforce.com/perforce/webkeeper.html">Perforce Webkeeper</A>
- [<A HREF="#2">2</A>] provides for simple retrieval of files from a perforce
- source code repository.
-
- <P>The <A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/p4db">p4db Depot Browser</A>
- [<A HREF="#3">3</A>] provides another front end for browsing files held in a perforce browsing system.
-
- <P><A HREF="http://www.mks.com/">Mortice Kern Systems, Inc.</A>
- provides a web based interface for the <A HREF="http://www.mks.com/solution/si/">Source Integrity Pro</A>
- [<A HREF="#4">4</A>] software configuration management system. In addition to
- these, there are probably hundreds of similar open source, closed source,
- and hand-rolled systems in existence.
-
- <P>[[If you know of any such systems that are distributed
- free (in either sense), please let me know. Safari's an equal opportunity
- borrower. Several of the p4db scripts have already been borrowed (with
- much gratitude).]]
-
- <P>Safari became a source code
- browser as a means to a different end: we needed to extract source code
- documentation (using an existing open source tool)
- and publish it on an intranet. Source code browsing was originally
- intended to provided a natural
- navigational interface for this system, but rapidly became the most
- used feature.
- As with many open source projects, it
- grew out of a need to scratch a fairly small itch and is growing
- to be a very general tool.
-
- <P>The current rewrite of Safari is intended
- to allow incorporation of many different tools and to
- be able to interface to a wide variety of file storage and archival systems.
-
- <H2><A NAME="Conception"></A>2. Conception</H2>
-
- <P>Safari was originally written starting in 1997 to automatically
- extract and publish documentation from comments in
- C++ source code kept in a closed source SCM system. The extraction
- tool in use is
- <A HREF="http://www.stratasys.com/software/cocoon/">Cocoon</A>
- [<A HREF="#5">5</A>]. The SCM is
- <A HREF="http://www.mks.com/solution/si/">MKS' Source Integrity</A> [<A HREF="#6">6</A>].
- The fact that both of these were pre-existing sytems meant that
- Safari was initially conceived as cgi-bin to glue together
- chains of external tools (SI -> Cocoon -> HTTP output).
-
- <P>Over time, feeping creaturism added:
-
- <UL>
- <LI>File-, project-, label- and revision-based browsing of source code,
- <LI>Automatic mark-up of filenames in #include statements
- to be links to the referred-to files,
- <LI>Syntax highlighting and colorizing of C++ and (in a limited fashion) perl
- source code,
- <LI>On-the-fly documentation extraction using Cocoon and pod2html (a
- utility distributed with perl),
- <LI>Change log description browsing on a per-file basis, and
- <LI>Simple searching for text or regular expressions within a file.
- </UL>
-
- <P>As Safari was extended, it grew beyond it's original mission
- as a documentation extraction
- tool and became a tool for researching, reviewing, and discussing
- code. It turns out that reading code is often easier in a browser than
- when using typical development environments of SCMs, file system browsers,
- documentation extractors, HTML browsers, editors, and the like.
-
- <P>The reasons a system such as Safari is more usable than
- traditional development environments are:
-
- <OL>
- <LI>There's no need to check out the files. Safari extracts files
- on-the-fly.
- <LI>Source code can be marked up to include links to other code.
- Things that can be activated in this manner include:
- <OL TYPE="a">
- <LI>References to other files / modules.
- <LI>Identifiers can link back to the definitions, or forward
- to a cross reference of their uses.
- <LI>URLs in comments or code
- <LI>Links can be added to point to external documentation
- of design and implementation.
- </OL>
- <LI>Documentation extractors and code analysis tools can be made
- almost effortless. For instance, Cocoon is complicated enough that
- only one or two developers at this site ever mastered it (not me). No
- other developer managed to get it up and running and use it for
- any length of time.
- <LI>Links to line numbers
- (a feature borrowed from the Linux Cross Reference tools [<A HREF="#1">1</A>])
- can be emailed to others. If link longevity is
- required, a search query that leads to a line of code can be emailed
- or stored, so edits that change line numbers don't cause link rot
- nearly as easily.
- </OL>
- All of this
- facilitates code reviews, documentation and research: it promotes
- those things that make open source so succesful today: communications and
- information.
-
- <P>With Safari, checking a file in <i>is</i> publishing it. Checking
- in is also
- publishing any documentation
- to be extracted from it. This turned out to be a very powerful mechanism.
- We found ourselves storing design documentation in the project. This
- allowed the design documentation to be automatically associated with the
- files that it referred to revision by revision, release by release.
-
- <P>In short, we found ourselves using Safari daily as an core
- technology for software development. It's not the most used or
- most important system, but it provides significant value to the
- developers.
- We extended it several times to incorporate
- new features, bloating the original script beyond the point of the
- maintainer's
- sanity (which may explain a few things about this paper). Eventually it became clear that there was an ecological niche in
- the broader internet community that a generalized, open source, modular
- Safari-like system could fill, even given the number of other similar
- systems available.
-
- <H2><A HREF="#Gestation"></A>3. Gestation</H2>
-
- <P>In the spring of 1998, I began to rewrite Safari in a more modular fashion
- while
- attempting to preserve the aspects that made Safari useful.
- Another goal was to allow for for easy integration of existing tools without
- requiring extensive programming knowledge. Perl's very good for controlling
- external programs, but there are many people with little or no Perl
- expertise out there.
-
-
- <P>Here's the general structure of a Safari instance:
-
- <IMG SRC="yapc1999-dataflow.gif" ALT="Safari Dataflow Diagram">
-
- <P>A fully functional Safari system is built with a web server,
- a cgi-bin (or preferably mod_perl) script <tt>cgimake</tt>, a make program,
- preferably GNU Make or Make.pm, a script to convert source materials into
- HTTP documents, and any external programs needed
- to fetch files and meta data from the data store and
- process it in to web-ready form. These tools are the key element of
- Safari: they are your existing tools, not special purpose
- Safari tools.
-
- <P>Several key factors that made the original single-script version of
- safari useful:
-
- <OL>
- <LI>Coherent, simple user interface,
- <LI>Coherent, simple URL 'API' design, and
- <LI>Emphasis on minimal administration and real-time updating.
- </OL>
-
- <P>Adding the goals of modularity and extensibility have rounded out
- Safari and made it a general purpose tool, with possible applications
- beyond source code browsing.
-
- <H3><A NAME="UI"></A>3.1 User Interface Metaphors</H3>
-
- <P>The key user interface decision that made Safari usable was basing the
- navigation on the hierarchical file structure present in the source code
- archives. This structure is already known by existing developers, and
- basing Safari's navigation system on it also provides a tool for learning
- and exploration by those who need to become familiar with it. Documentation
- and other analytical tools should be reachable by browsing to a file or
- directory, then following a link to the desired output.
-
- <P>The disadvantage of this approach is that popular web browsers
- make mediocre hierarchy browsers. Javascript, Java, and custom browsers
- all provide possible avenues of approach for more friendly user interfaces.
- Safari takes a lowest common denominator approach with low graphics
- intensity to make it more generally usable. The emphasis is on features,
- not flash (for now). That being said, a very nice tree oriented GUI would be
- a fantastic addition.
-
- <P>Alternate browsing structures can easily be provided by adding reports
- or pages to Safari. These pages can be built automatically by an indexing
- tool (pod2html does this, for example), or manually. An example of the
- manual technique is a web page that describes each main active project
- and provides links to 'interesting' places in it. Interesting places might
- be the project root, design documents (standalone and automatically extracted),
- output of analysis tools, key routines, structure definitions, or
- files within the project, and external resources such as mailing lists,
- news groups, or other web sites.
-
- <P>A search engine or permuted index generator can provide master 'random
- access' to the file tree. This is one of the most important features that
- Safari lacks support for at this time, and is the feature that the
- Linux Cross Reference Project was built for.
-
- <H3><A NAME="URL"></A>3.2 URL Design</H3>
-
- <P>The URL serves as the basic API that ties the user, the browser, and
- the Safari scripts together. Users often type them in manually instead
- of browsing to a location, so the URL should be easy to construct manually.
- In effect, it's a low-level alternate user interface. Browsers base
- relative link calculations on URLs, so placing contextual
- information
- to the left of the destination document's path (as opposed to putting it
- in a '?' query specification) allows relative links between
- documents to lead to sensible destinations.
- And simple, consistent URL design makes scripting the back end much
- easier.
-
- <P>The URL design must support the hierarchical structure
- of the underlying archival system, must incorporate a revision identifier
- and also specification of which analysis or extraction tool's output
- is being browsed. The typical Safari URL looks like:
-
- <PRE>
- http://a.b.com/checkers/_head/pretty/code/inc/checkers.h
- | | | | |
- +----------------------+-----+------+------------------+
- | Project identity | Rev |Filter| File spec |
- </PRE>
-
- where:
-
- <DL>
- <DT>Project Identity
- <DD>This is the root URL which determines what project Safari
- is concerned with. In this case, the web server is configured to
- map '/checkers/' to the Safari system.
- <DT>Rev
- <DD>The revision specifier comes next. This is usually a label
- or change number, but can be a raw revision number in some cases.
- The reason that it is not usually a raw revision number is that
- it's rare that revision 123 of one file corresponds to revision
- 123 of another file. Using change set numbers or labels that
- mark a release to specify revisions means that all filenames
- specified to the right of the revision field refer to a
- coherent, consistent set of files.
- <DT>Filter
- <DD>The filter specified the lens through which the file is to
- be viewed. This may be a pretty-printer, a word/line counter,
- a documentation extractor, a lint-like tool, etc.
- <DT>File Spec
- <DD>This indicates which file in the namespace of the project,
- revision, and filter is being accessed.
- </DL>
-
- <P>Safari uses the query string portion of the URL (the part after
- a '?') to provide transient information. This transient information
- is information that should not affect the revision or current
- filter settings, and thus should not
- affect the document's position
- in the overall heirarchy.
-
- <P>Here are some examples of Safari URLs. Sample pages generated by these
- are included in the appendix.
-
- <DL>
- <DD>
- <PRE>
- <A HREF="#depots">http://localhost/safaridev/perforce/_head/Default/</A>
- Leads to a list of files in the top level of Perforce Inc.'s public
- source code archive.
-
- <A HREF="#Default">http://localhost/safaridev/perforce/<B>_head</B>/Default/public/index.html</A>
- Displays the head revision of the index.html extracted from that archive.
-
- <A HREF="#pretty">http://localhost/safaridev/perforce/_head/<B>pretty</B>/public/index.html</A>
- Displays the same page as syntax highlighted source code
-
- <A HREF="#wc">http://localhost/safaridev/perforce/_head/pretty/public/index.html<B>?filter=wc</B></A>
- Displays the output of the '<tt>wc</tt>' command when run on index.html
-
- <A HREF="#filelog">http://localhost/safaridev/perforce/_head/pretty/public/index.html<B>?rev=_head&filter=filelog</B></A>
- Displays the complete history of the file index.html.
-
- <A HREF="#c6">http://www.slaysys.com/safaridev/perforce/<B>@6</B>/Default/public/index.html</A>
- Diplays the versins of index.html associated with change set number 6.
-
- </PRE>
- </DD>
- </DL>
-
- <P>In essence, each combination of project and revision label or change
- number specifies a consistent set of files that correspond to each other.
- The filter determines how the source file should be processed before
- viewing, and the file spec leads to the file itself.
-
- <P>Some filters generate different namespaces than the underlying
- archive structure. This makes linking into and out of that filter
- a little tricky, but relative links between files within a filter's namespace
- work fine.
-
- <P>It's important to note that links between documents (both hard coded
- and those automatically marked up by Safari) should be relative links, for
- two reasons:
-
- <UL>
- <LI>Relative links will work in multiple filters and revisions
- <LI>A user should be able to take a copy of the files and browse
- them using a file: URL or other scheme.
- </UL>
-
- <P>This is not always possible given the fact that third party tools
- are not always prepared to generate relative links. Workarounds do
- exist for some cases.
-
- <H3><A NAME="Admin"></A>3.3 Administration and upkeep</H3>
-
- <P>A key element in the adoption of Safari was minimal administration.
- Safari was born out of a need to publish sets of extracted source code
- documentation on the web, combined with the extreme distaste several
- of us had for manually generating and publishing docsets.
-
- <P>Safari makes extensive use of file time stamps and meta information
- from the underlying storage system to determine when to check out a new
- file or (re)generate output derived from the source files.
- This can be done on a timed basis (to avoid having to evaluate
- things every HTTP request), or it can be done on every HTTP request.
-
- <P>In the original script, I found myself using and debugging a lot
- of dependency rules. This inspired the use of GNU Make as the tool
- to tie the cgi-bin (or mod_perl) script to the underlying tools.
-
- <P>GNU Make provides several important features for Safari:
-
- <OL>
- <LI>a standard, well known, documented language for declaring the processes
- needed to generate target files,
- <LI>a program that evaluates this definition file and uses filesystem
- meta information to decide what to remake,
- <LI>the ability to incorporate existing tools in to Safari without
- massive hacking efforts. <tt>gcc -c -Wall</tt> (ie lint) and <tt>wc</tt>
- are implemented in the demonstration server as examples, but others
- are available.
- </OL>
-
- <P>GNU Make also poses a few challenges:
-
- <OL>
- <LI>There's no way to force a complete regeneration of output from the
- source file in the event that a bug or transient condition causes
- invalid output. This is especially important for Safari implementors,
- but it's also a handy fly swatter for end users occasionally.
- <LI>There's not an easy way to tell GNU Make to keep intermediate files
- around while not ignoring errors (ie .SECONDARY's feature set is not
- full enough for Safari). To work around this, Safari uses .PRECIOUS
- and the scripts and Makefile shell commands that implement the
- underside of Safari delete their output files in the event of an error.
- <LI>There's no natural way to use Make to check to see if a new
- revision exists in a modern client-server RCS / SCM.
- <LI>GNU Make's functional programming API is very weak, and it can
- be tricky to implement content-based decision making in a Makefile.
- <LI>Make doesn't give a flock, so access sharing must be implemented
- at a more global level that would be necessary if make could do it.
- </OL>
-
- <P>Improvements that address
- the first two of these are now on the TODO list for the GNU Make developers.
- Workarounds exist for all of these, but improvements should be made that
- remove them.
-
- <H3><A NAME="Design"></A>3.4 Miscellaneous Design Issues</H3>
-
- <P>A few other key notes about the design and implementation:
-
- <OL>
- <LI>Safari is completely implemented in perl and GNU Make (although
- the binaries necessary to connect to various RCSs are used).
- <LI>A perl module implementing GNU Make with some powerful perlish
- extensions has been developed and will be adapted to Safari use as
- needed. This will run more slowly than GNU Make, but may make up
- for that by reducing the forking required to do a build.
- <LI>An enhanced version of the standard Unix <tt>file</tt> command
- has been developed as a module File::Type. It reports mime types
- and is more accurate at guessing source code languages.
- </OL>
-
- <H2><A NAME="Birth"></A>4. Birth</H3>
-
- <P>Safari's first open source release (0.50) has been developed to coincide
- with yapc (Yet Another Perl Conference) in June of 1999. The 0.50 release
- has a full basic feature set, with a lot of room to grow. A demonstration
- site URL should be available shortly before and for a while after the
- conference.
-
- <P>Safari's source is all browse-able on the web in the perforce
- public depot and will be distributed via CPAN in tarball form.
-
- <P>Mailing lists exist for Safari announcements and developer discussions.
- More details are available on the Safari web site. Please join and
- contribute.
-
- <H2><A NAME="Growth"></a>5. Growth Plan</H3>
-
- <P>Safari has a lot of room to grow. It is designed to be an open-ended
- project. Areas of significant development are:
-
- <UL>
- <LI>Indexing. Since many source code archives contain a milieu of programming
- and non-programming languages, indexing is quite a challenge. It should
- be a very interesting project.
- <LI>Given good indexing, automatic activation of important words in
- displayed documents provides an extremely useful mechanism that makes
- Safari much more useful than most editors as a code browser.
- <LI>A library of back ends to different RCSs and SCMs needs to be
- built. Perforce and the local filesystem are the only back ends currently
- implemented. Back ends to PVCS, CVS and MKS SI are in development by
- myself and others.
- <LI>A library of contributed scripts and Makefiles will be collected
- and published to promote cross-pollination.
- <LI>Partial parsing of source languages will greatly facilitate better
- indexing and syntax highlighting. This parsing can provide the
- context for each indexed word or phrase, like
- whether it's a variable, macro, function, typename, or comment. This can
- allow for finer grained searches and for better syntax highlighting and
- automatic link generation when marking up source files.
- <LI>Alternate user interfaces, like a tree view control. Safari's
- intentionally lowest-common-denominator HTML GUI needs to remain,
- but that should not limit it's growth.
- <LI>It shouldn't be very far from a browser to a simple check-in/checkout
- locking and merging interface, especially given the work on WebDAV.
- <LI>Allowing a mechanism for sticky-notes to be created and attached to
- source code would make Safari an incredibly powerful code review tool.
- </UL>
-
- <P><B>Please join and contribute!!</B>
-
- <H2><A NAME="Samples"></A>Appendix A. Sample Pages</H2>
-
- <P>Several example pages are given in the order you would browse them
- in.
-
- <HR>
- <A NAME="depots"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/Default/
- </TH></TR>
- <TR><TD>The list of depots available at public.perforce.com:1666</TD></TR>
- </TABLE>
-
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/</FONT> (Default filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="">top</A><BR> up<BR> <A HREF="../../_head/changes/index.html">changes</A><BR> <A HREF="../../_head/labels/index.html">labels</A><BR> <A HREF="?force=yes&">rebuild</A><BR><BR>
-
-
- <BR>
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <TABLE CELLPADDING="5" CELLSPACING="0" BORDER="0">
- <TR ALIGN="LEFT"><TH ALIGN="RIGHT"><BR></TH><TH ALIGN="LEFT">Depot</TH><TH ALIGN="LEFT">Description</TH></TR>
- <TR><TD ALIGN="RIGHT">1</TD><TD ALIGN="LEFT"><A HREF="guest/">guest/</A></TD><TD ALIGN="LEFT">Depot for guest users. </TD></TR>
- <TR><TD ALIGN="RIGHT">2</TD><TD ALIGN="LEFT"><A HREF="public/">public/</A></TD><TD ALIGN="LEFT">Perforce's open source depot. </TD></TR>
-
- </TABLE>
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Wed Jun 16 15:08:39 1999</TD>
- </TR>
- </TABLE>
-
- <HR>
- <A NAME="public"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/Default/public/
- </TH></TR>
- <TR><TD>The list of depots files available in the public depot ( //public/* ) at public.perforce.com:1666, and their<BR>
- revision levels and last change number, as of the head revision.</TD></TR>
- </TABLE>
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/</FONT> (Default filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="../">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="?force=yes&">rebuild</A><BR><BR>
-
-
- <BR>
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <TABLE CELLPADDING="5" CELLSPACING="0" BORDER="0">
- <TR ALIGN="LEFT"><TH ALIGN="RIGHT"><BR></TH><TH ALIGN="LEFT">File</TH><TH ALIGN="RIGHT">Rev</TH><TH ALIGN="LEFT">Description</TH><TH ALIGN="RIGHT">Change</TH><TH ALIGN="LEFT">Type</TH></TR>
- <TR><TD ALIGN="RIGHT">1</TD><TD ALIGN="LEFT"><A HREF="index.html">index.html</A></TD><TD ALIGN="RIGHT"><A HREF="index.html?filter=filelog">#17</A></TD><TD ALIGN="LEFT">edit</TD><TD ALIGN="RIGHT"><A HREF="../../../_head/changes/114.html">114</A></TD><TD ALIGN="LEFT">ktext</TD></TR>
- <TR><TD ALIGN="RIGHT">2</TD><TD ALIGN="LEFT"><A HREF="jam/">jam/</A></TD><TD ALIGN="RIGHT"><A HREF="jam/?filter=filelog">#2</A></TD><TD ALIGN="LEFT">integrate</TD><TD ALIGN="RIGHT"><A HREF="../../../_head/changes/76.html">76</A></TD><TD ALIGN="LEFT">xtext</TD></TR>
- <TR><TD ALIGN="RIGHT">3</TD><TD ALIGN="LEFT"><A HREF="perforce/">perforce/</A></TD><TD ALIGN="RIGHT"><A HREF="perforce/?filter=filelog">#2</A></TD><TD ALIGN="LEFT">edit</TD><TD ALIGN="RIGHT"><A HREF="../../../_head/changes/98.html">98</A></TD><TD ALIGN="LEFT">ktext</TD></TR>
- <TR><TD ALIGN="RIGHT">4</TD><TD ALIGN="LEFT"><A HREF="tutorial.html">tutorial.html</A></TD><TD ALIGN="RIGHT"><A HREF="tutorial.html?filter=filelog">#9</A></TD><TD ALIGN="LEFT">edit</TD><TD ALIGN="RIGHT"><A HREF="../../../_head/changes/147.html">147</A></TD><TD ALIGN="LEFT">ktext</TD></TR>
-
- </TABLE>
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Wed Jun 16 15:42:46 1999</TD>
- </TR>
- </TABLE>
-
- <HR>
- <A NAME="Default"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/Default/public/index.html
- </TH></TR>
- <TR><TD>The head revision of //public/index.html from public.perforce.com:1666</TD></TR>
- </TABLE>
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/index.html</FONT> (HTML filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="index.html?force=yes&">rebuild</A><BR><BR>
-
- <FONT SIZE="-1"><B>FILTERS</B></FONT><BR> <A HREF="../../Default/public/index.html">Default</A><BR> <A HREF="../../POD/public/index.html">POD</A><BR> <A HREF="../../pretty/public/index.html">pretty</A><BR> <A HREF="../../plain/public/index.html">plain</A><BR> <A HREF="../../HTML/public/index.html">HTML</A><BR><BR>
-
- <FONT SIZE="-1"><B>TOOLS</B></FONT><BR> <A HREF="index.html?filter=gcclint">gcclint</A><BR> <A HREF="index.html?filter=wc">wc</A><BR> <A HREF="index.html?rev=_head&filter=filelog">filelog</A><BR><BR>
-
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <CENTER>
- <P>
- <A NAME="toc"></A>
- <A HREF="http://www.perforce.com">
- <IMG SRC="http://www.perforce.com/images/logo.gif" alt="Perforce" border=0></A>
- <H1>
- Welcome to the Perforce Public Depot
- </H1>
- <P>
-
- <TABLE BORDER=0><TR><TD>
- <B>
- <UL>
- <LI><A HREF="#aboutPerforce">About Perforce and the Public Depot
- </A>
- <LI><A HREF="#roadmap">The Depot Road Map
- </A>
- <LI><A HREF="#howtobrowse">How to Browse the Depot
- </A>
- <LI><A HREF="#howtocontrib">How to Contribute to the Depot
- </A>
- </UL>
- </UL>
- </TABLE>
- </CENTER>
- <br>
- <br>
- <br>
-
- <!------------------------------------------------------------------>
- <P>
- <TABLE CELLSPACING=0 BORDER=0 WIDTH=100%><TR><TD BGCOLOR=FFCC66>
-
- <A NAME="aboutPerforce"></A>
- <H2>About Perforce and the Public Depot
- </H2>
-
-
- <TD WIDTH=5% BGCOLOR=FFCC66 ALIGN=RIGHT><FONT SIZE="-2"><A HREF="#toc">
- Back to<BR>Table of<BR>Contents</A></TD></TR>
- </TABLE>
-
- <P ALIGN="CENTER"><B> [...lots of good information snipped for brevity...] </B>
-
- <!------------------------------------------------------------------>
- <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: //public/index.html#17 $</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>
- <!------------------------------------------------------------------>
-
-
-
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Fri Jun 18 02:24:59 1999</TD>
- </TR>
- </TABLE>
-
- <HR>
- <A NAME="pretty"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/pretty/public/index.html
- </TH></TR>
- <TR><TD>The syntax highlighted source code for the head revision of //public/index.html from<BR> public.perforce.com:1666</TD></TR>
- </TABLE>
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/index.html</FONT> (pretty filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="index.html?force=yes&">rebuild</A><BR><BR>
-
- <FONT SIZE="-1"><B>FILTERS</B></FONT><BR> <A HREF="../../Default/public/index.html">Default</A><BR> <A HREF="../../POD/public/index.html">POD</A><BR> <A HREF="../../pretty/public/index.html">pretty</A><BR> <A HREF="../../plain/public/index.html">plain</A><BR> <A HREF="../../HTML/public/index.html">HTML</A><BR><BR>
-
- <FONT SIZE="-1"><B>TOOLS</B></FONT><BR> <A HREF="index.html?filter=gcclint">gcclint</A><BR> <A HREF="index.html?filter=wc">wc</A><BR> <A HREF="index.html?rev=_head&filter=filelog">filelog</A><BR><BR>
-
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
- <pre>
- <a name="line1" href="#line1"> 1</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">H</font><font color="#0000ff">T</font><font color="#0000ff">M</font><font color="#0000ff">L</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line2" href="#line2"> 2</a>
- <a name="line3" href="#line3"> 3</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">H</font><font color="#0000ff">E</font><font color="#0000ff">A</font><font color="#0000ff">D</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line4" href="#line4"> 4</a>
- <a name="line5" href="#line5"> 5</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">T</font><font color="#0000ff">I</font><font color="#0000ff">T</font><font color="#0000ff">L</font><font color="#0000ff">E</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line6" href="#line6"> 6</a> Perforce Public Depot
- <a name="line7" href="#line7"> 7</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">/</font><font color="#0000ff">T</font><font color="#0000ff">I</font><font color="#0000ff">T</font><font color="#0000ff">L</font><font color="#0000ff">E</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line8" href="#line8"> 8</a>
- <a name="line9" href="#line9"> 9</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">/</font><font color="#0000ff">H</font><font color="#0000ff">E</font><font color="#0000ff">A</font><font color="#0000ff">D</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line10" href="#line10"> 10</a>
- <a name="line11" href="#line11"> 11</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">B</font><font color="#0000ff">O</font><font color="#0000ff">D</font><font color="#0000ff">Y</font><font color="#0000ff"> </font><font color="#0000ff">B</font><font color="#0000ff">G</font><font color="#0000ff">C</font><font color="#0000ff">O</font><font color="#0000ff">L</font><font color="#0000ff">O</font><font color="#0000ff">R</font><font color="#0000ff">=</font><font color="#008000">"#FFFFFF"</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line12" href="#line12"> 12</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">C</font><font color="#0000ff">E</font><font color="#0000ff">N</font><font color="#0000ff">T</font><font color="#0000ff">E</font><font color="#0000ff">R</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line13" href="#line13"> 13</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">P</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line14" href="#line14"> 14</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">A</font><font color="#0000ff"> </font><font color="#0000ff">N</font><font color="#0000ff">A</font><font color="#0000ff">M</font><font color="#0000ff">E</font><font color="#0000ff">=</font><font color="#008000">"toc"</font><font color="#0000aa"><strong>></strong></font></font><font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">/</font><font color="#0000ff">A</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line15" href="#line15"> 15</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">A</font><font color="#0000ff"> </font><font color="#0000ff">H</font><font color="#0000ff">R</font><font color="#0000ff">E</font><font color="#0000ff">F</font><font color="#0000ff">=</font><font color="#008000">"http://www.perforce.com"</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line16" href="#line16"> 16</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">I</font><font color="#0000ff">M</font><font color="#0000ff">G</font><font color="#0000ff"> </font><font color="#0000ff">S</font><font color="#0000ff">R</font><font color="#0000ff">C</font><font color="#0000ff">=</font><font color="#008000">"http://www.perforce.com/images/logo.gif"</font><font color="#0000ff"> </font><font color="#0000ff">a</font><font color="#0000ff">l</font><font color="#0000ff">t</font><font color="#0000ff">=</font><font color="#008000">"Perforce"</font><font color="#0000ff"> </font><font color="#0000ff">b</font><font color="#0000ff">o</font><font color="#0000ff">r</font><font color="#0000ff">d</font><font color="#0000ff">e</font><font color="#0000ff">r</font><font color="#0000ff">=</font><font color="#0000ff">0</font><font color="#0000aa"><strong>></strong></font></font><font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">/</font><font color="#0000ff">A</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line17" href="#line17"> 17</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">H</font><font color="#0000ff">1</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line18" href="#line18"> 18</a> Welcome to the Perforce Public Depot
- <a name="line19" href="#line19"> 19</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">/</font><font color="#0000ff">H</font><font color="#0000ff">1</font><font color="#0000aa"><strong>></strong></font></font>
- <a name="line20" href="#line20"> 20</a> <font color="#993333"><font color="#0000aa"><strong><</strong></font><font color="#0000ff">P</font><font color="#0000aa"><strong>></strong></font></font>
- <B> [...more lines, snipped for brevity...] </B>
- </pre>
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Fri Jun 18 02:25:38 1999</TD>
- </TR>
- </TABLE>
-
- <HR>
- <A NAME="wc"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/pretty/public/index.html?filter=wc
- </TH></TR>
- <TR><TD>Output of the '<TT>wc</TT>' command applied to the
- file //public/index.html</TD></TR>
- </TABLE>
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/index.html</FONT> (wc filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="index.html?force=yes&filter=wc">rebuild</A><BR><BR>
-
- <FONT SIZE="-1"><B>FILTERS</B></FONT><BR> <A HREF="../../Default/public/index.html">Default</A><BR> <A HREF="../../POD/public/index.html">POD</A><BR> <A HREF="../../pretty/public/index.html">pretty</A><BR> <A HREF="../../plain/public/index.html">plain</A><BR> <A HREF="../../HTML/public/index.html">HTML</A><BR><BR>
-
- <FONT SIZE="-1"><B>TOOLS</B></FONT><BR> <A HREF="index.html?filter=gcclint">gcclint</A><BR> wc<BR> <A HREF="index.html?rev=_head&filter=filelog">filelog</A><BR><BR>
-
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <PRE>453 lines, 1257 words, 12271 bytes in _head/public/index.html
- </PRE>
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Fri Jun 18 02:27:13 1999</TD>
- </TR>
- </TABLE>
- <HR>
- <A NAME="filelog"></A><TABLE BORDER="1"><TR><TH>Location:
- http://localhost/safaridev/perforce/_head/pretty/public/index.html?rev=_head&filter=filelog
- </TH></TR>
- <TR><TD>The complete revision history of the file //public/index.html</TD></TR>
- </TABLE>
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/index.html</FONT> (filelog filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="index.html?force=yes&rev=_head&filter=filelog">rebuild</A><BR><BR>
-
- <FONT SIZE="-1"><B>FILTERS</B></FONT><BR> <A HREF="../../Default/public/index.html">Default</A><BR> <A HREF="../../POD/public/index.html">POD</A><BR> <A HREF="../../pretty/public/index.html">pretty</A><BR> <A HREF="../../plain/public/index.html">plain</A><BR> <A HREF="../../HTML/public/index.html">HTML</A><BR><BR>
-
- <FONT SIZE="-1"><B>TOOLS</B></FONT><BR> <A HREF="index.html?filter=gcclint">gcclint</A><BR> <A HREF="index.html?filter=wc">wc</A><BR> <A HREF="index.html?rev=_head&filter=filelog">filelog</A><BR><BR>
-
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <UL>
- <TABLE>
- <TR ALIGN="LEFT"><TH>Rev</TH><TH>Act.</TH><TH>Date</TH><TH>User</TH><TH>Change</TH><TH>Desc</TH><TH>Labels</TH><TH>Opened_by</TH><TH></TR>
- </TH><TR><TD VALIGN="TOP"><A HREF="../../../_17/pretty/public/index.html">17</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1999/03/22</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/114.html">114</A></TD><TD VALIGN="TOP"><tt>Fix typos in links. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_16/pretty/public/index.html">16</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1999/03/15</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/94.html">94</A></TD><TD VALIGN="TOP"><tt>Re-org "triggers" directory -- </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_15/pretty/public/index.html">15</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1999/01/05</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/52.html">52</A></TD><TD VALIGN="TOP"><tt>Minor web page format changes. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_14/pretty/public/index.html">14</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1999/01/05</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/51.html">51</A></TD><TD VALIGN="TOP"><tt>Update copyright year. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_13/pretty/public/index.html">13</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1999/01/05</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/50.html">50</A></TD><TD VALIGN="TOP"><tt>Minor PD doc changes. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_12/pretty/public/index.html">12</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/12/24</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/46.html">46</A></TD><TD VALIGN="TOP"><tt>Add WebKeeper source. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_11/pretty/public/index.html">11</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/12/03</TD><TD VALIGN="TOP">laura_wingerd</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/42.html">42</A></TD><TD VALIGN="TOP"><tt>Fix links in index pages, add o</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_10/pretty/public/index.html">10</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/11/05</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/28.html">28</A></TD><TD VALIGN="TOP"><tt>Reword intro, fix typos, fix na</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_9/pretty/public/index.html">9</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/26</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/26.html">26</A></TD><TD VALIGN="TOP"><tt>Fleshed out "how to contribute"</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_8/pretty/public/index.html">8</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/22</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/22.html">22</A></TD><TD VALIGN="TOP"><tt>Added "About the depot" section</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_7/pretty/public/index.html">7</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/09</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/19.html">19</A></TD><TD VALIGN="TOP"><tt>Fix browser links, add lost tra</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_6/pretty/public/index.html">6</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/09</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/15.html">15</A></TD><TD VALIGN="TOP"><tt>Added browser links to index. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_5/pretty/public/index.html">5</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/05</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/10.html">10</A></TD><TD VALIGN="TOP"><tt>Added "How to Browse". </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_4/pretty/public/index.html">4</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/02</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/9.html">9</A></TD><TD VALIGN="TOP"><tt>Add road map & nicer formatting</tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_3/pretty/public/index.html">3</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/02</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/8.html">8</A></TD><TD VALIGN="TOP"><tt>Change to ktext. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_2/pretty/public/index.html">2</A></TD><TD VALIGN="TOP">edit</TD><TD VALIGN="TOP">1998/10/02</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/7.html">7</A></TD><TD VALIGN="TOP"><tt>Test links in index page. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD><TR><TD VALIGN="TOP"><A HREF="../../../_1/pretty/public/index.html">1</A></TD><TD VALIGN="TOP">add</TD><TD VALIGN="TOP">1998/10/02</TD><TD VALIGN="TOP">perforce</TD><TD VALIGN="TOP"><A HREF="../../../_head/changes/6.html">6</A></TD><TD VALIGN="TOP"><tt>Open source depot index. </tt></TD><TD VALIGN="TOP"><b></b></TD><TD VALIGN="TOP"></TD><TD VALIGN="TOP"></TR>
- </TD></TABLE>
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Fri Jun 18 02:27:54 1999</TD>
- </TR>
- </TABLE>
-
- <HR>
- <A NAME="c6"></A><TABLE BORDER="1"><TR><TH>Location:
- http://www.slaysys.com/safaridev/perforce/@6/Default/public/index.html
- </TH></TR>
- <TR><TD>The file index.html as of change number 6.</TD></TR>
- </TABLE>
-
-
- <TABLE WIDTH="100%" BORDER="0" CELLPADDING="10" CELLSPACING="0">
- <TR>
- <TD BGCOLOR="#B0E0FF" ALIGN="CENTER" COLSPAN="2"><FONT SIZE="+3">perforce/public/index.html</FONT> (HTML filter)</TD>
- </TR>
- <TR>
- <TD BGCOLOR="#B0E0FF" VALIGN="TOP">
- <FONT SIZE="-1"><B>PROJECT</B></FONT><BR> <A HREF="../">top</A><BR> <A HREF="">up</A><BR> <A HREF="../../../_head/changes/index.html">changes</A><BR> <A HREF="../../../_head/labels/index.html">labels</A><BR> <A HREF="index.html?force=yes&">rebuild</A><BR><BR>
-
- <FONT SIZE="-1"><B>FILTERS</B></FONT><BR> <A HREF="../../Default/public/index.html">Default</A><BR> <A HREF="../../POD/public/index.html">POD</A><BR> <A HREF="../../pretty/public/index.html">pretty</A><BR> <A HREF="../../plain/public/index.html">plain</A><BR> <A HREF="../../HTML/public/index.html">HTML</A><BR><BR>
-
- <FONT SIZE="-1"><B>TOOLS</B></FONT><BR> <A HREF="index.html?filter=gcclint">gcclint</A><BR> <A HREF="index.html?filter=wc">wc</A><BR> <A HREF="index.html?rev=_head&filter=filelog">filelog</A><BR><BR>
-
- </TD>
- <TD WIDTH="99%" VALIGN="TOP" ALIGN="LEFT">
-
- <h3>Testing...</h3>
- This is a test.
- <p>
- This should be the Perforce
- <a href=../index.html>home page</a>.
-
-
-
- </TD>
- <TR BGCOLOR="#B0E0FF">
- <TD ALIGN="CENTER" COLSPAN="2">This page generated by Safari at Fri Jun 18 04:59:03 1999</TD>
- </TR>
- </TABLE>
-
- <h2><A NAME="References"></A>References</h2>
-
- <P><A NAME="1">[1]</A> The Linux Cross Reference System
- ( <A HREF="http://lxr.linux.no/">http://lxr.linux.no/</A> ).
-
- <P><A NAME="2">[2]</A> The Perforce WebKeeper
- ( <A HREF="http://www.perforce.com/perforce/webkeeper.html">http://www.perforce.com/perforce/webkeeper.html</A> ).
-
- <P><A NAME="3">[3]</A> The p4db Perforce Depot Browser
- ( <A HREF="http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/p4db">http://public.perforce.com/cgi-bin/p4db/dtb.cgi?FSPC=public/perforce/utils/p4db</A> ).
-
- <P><A NAME="4">[4]</A> Mortice Kern Systems' Source Integrity Pro Software Configuration Management System
- ( <A HREF="http://www.mks.com/solution/si/pro/">http://www.mks.com/solution/si/pro/</A> ).
-
- <P><A NAME="5">[5]</A> The Cocoon Utilities, Version 3.2, Jeffrey Kotula
- ( <A HREF="http://www.stratasys.com/software/cocoon/">http://www.stratasys.com/software/cocoon/</A> ).
-
- <P><A NAME="6">[6]</A> Mortice Kern Systems' Source Integrity
- ( <A HREF="http://www.mks.com/solution/si/">http://www.mks.com/solution/si/</A> ).
- </body>
- </html>