- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
- "http://www.w3.org/TR/REC-html40/strict.dtd">
- <html>
- <head>
- <title>Web Content Management FAQ</title>
- <meta name="Author" content="Mike Meyer"></head>
- <body>
- <h1>Web Content Management FAQ</h1>
- <p>Contributed by Mike Meyer</p>
- <p><em>Some pointers on using <a
- href="http://www.perforce.com/">Perforce</a> for Web Content
- Management, presented in the form of a FAQ.</em></p>
- <ul>
- <li><a href="#wcmfaq1">What is W.C.M.?</a></li>
- <li><a href="#wcmfaq2">How is W.C.M. different from S.C.M?</a></li>
- <li><a href="#wcmfaq4">How can I use Perforce to help with my
- W.C.M. problems?</a></li>
- <li><a href="#wcmfaq5">How can I ensure that no one edits files in the
- published branch?</a></li>
- <li><a href="#wcmfaq6">How can I check my HTML documents?</a></li>
- <li><a href="#wcmfaq7">How can I update my search engine's database?</a></li>
- <li><a href="#wcmfaq8">How can I make my scripts executable?</a></li>
- </ul>
- <h2>Answers</h2>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq1"><a name="wcmfaq1"></a>What is W.C.M.?</h3>
- <p>Web Content Management - W.C.M. - is the maintainence of the
- content of a web site. Like an S.C.M. task, it involves keeping track
- of a collection of files being revised by different people
- for different reasons, and being able to recreate a specific set of
- those files from any moment in time.</p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq2"><a name="wcmfaq2"></a>How is W.C.M. different from S.C.M?</h3>
- <p>S.C.M. involves maintaining a collection of files that go through a
- build process to create a product that can be tested. W.C.M. involves
- maintaining the files for a web site. A web site is a collection of
- pages which users access over the web. Some of those pages are just
- bits of text. Others are programs - possibly compiled - that
- dynamically generate new text on every access. Any possible variation
- between those extremes is possible, from pages that are nearly static
- with a few bits of dynamically generated text, to programming
- languages that have the same structure as the generated HTML page.</p>
- <p>One major difference between W.C.M. and S.C.M. is in the build
- phase. The result of a build is critical to an S.C.M., as that
- <strong>is</strong> the product. For a W.C.M., there may not be a
- build phase at all.</p>
- <p>A second major difference between W.C.M. and S.C.M. is that there
- is only <strong>one</strong> web site, and everyone uses it. You don't
- have a copy of the product for each user, and one for testing.</p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq3"><a name="wcmfaq3"></a>How do I test a web site?</h3>
- <p>For static pages, you verify that the pages meet your standards
- (see <a href="#wcmfaq6">the question on checking documents</a> for
- instruction on automating this), and that all the links are to valid
- documents. Since web sites sometimes vanish or change - even yours -
- running link checks on the production files at regular intervals is a
- good practice.</p>
- <p>For dynamic pages, part of whose content come from an external
- database, the problem is much harder. You don't want to run tests
- against the production database. The solution is to duplicate the
- production environment on a <em>test</em> server, and run tests on
- that. In extreme cases, the database client software running on the
- web server may not be something that can be duplicated on each
- developers desktop. In this case, a third copy of the server can be
- set up as a <em>development</em> server, though this leads to quite
- predictable resource conflicts.</p>
- <p>Software for testing web sites is a rapidly changing field. Rather
- than recommend a specific product or product list, I'd recommend
- trying your favorite search engine for <em>web server testing</em></p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq4"><a name="wcmfaq4"></a>How can I use Perforce to help with my W.C.M. problems?</h3>
- <p>By using it to help manage the files, just as you would if they
- were part of any other product. See the white paper on <a
- href="http://www.perforce.com/perforce/wcm.html">Web Content
- Management with Perforce</a> for a detailed description of several
- plans for doing this.</p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq5"><a name="wcmfaq5"></a>How can I ensure that no one edits files in the
- published branch?</h3>
- <p>By adding a trigger to the published branch which verifies that the
- changes which affect files in that branch are branches, integrations
- or deletions. The <em>checkfor.py</em> script can do this, with a
- trigger line similar to:</p>
- <pre>integration //depot/web/published/... "checkfor.py ' - (integrate|branch|delete) change ' %changelist% %serverport%"</pre>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq6"><a name="wcmfaq6"></a>How can I check my HTML documents?</h3>
- <p>Perforce can do this for you. Doing so requires that you have one
- branch for unchecked files, and a branch for checked files - which is
- one of the two methods recommended by the white paper on <a
- href="http://www.perforce.com/perforce/wcm.html">Web Content
- Management with Perforce</a>. Since files in the published branch
- should be exact copies of the files in the development branch (see <a
- href="#wcmfaq5">the question on preventing edits</a>), a trigger on
- the published branch can get the file from the development branch to
- check. The error messages from the checker will be sent to the
- change submitter if the check fails, so the developer is notified
- about what needs to be fixed.</p>
- <p>After such an integration fails, the file in the published branch
- is locked. Fixing the problem will require reverting the file on the
- published branch before reintegrating the fixed file from the
- production branch.</p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq7"><a name="wcmfaq7"></a>How can I update my search engine's database?</h3>
- <p>The answer depends on how you are getting files from Perforce to
- the web server, and how your search engine builds the database.</p>
- <p>To take proper advantage of Perforce in this case, you need a
- search engine that can update its database when a single file
- changes. Once you have that, you add hooks to the W.C.M. system to get
- a list of files that have changed so the database can be updated.</p>
- <p>If your production web server is a client which you synchronize to
- the Perforce depot to update, then the list of new files is
- immediately available as the output of the <em>p4 sync</em>
- command. It will need to be massaged into a form acceptable to the
- search engine, which should be a simple text substitution.</p>
- <p>If you are using <a
- href="http://www.perforce.com/perforce/webkeeper.html">WebKeeper,</a>
- then the list of files isn't quite so readily available. In this case,
- you set up a review daemon which gets the lists of changes that
- involve the web files in the depot, and extract the list of depot
- files from those changes. From this point, it's again a simple matter
- of text substitution.</p>
- <!-- if netscape weren't garbage, the <A> wouldn't need to be here -->
- <h3 id="wcmfaq8"><a name="wcmfaq8"></a>How can I make my scripts executable?</h3>
- <p>Perforce stores the file type for each file which includes this
- information. See the <code>p4 help filetypes</code> text for complete
- information for your server. The correct type for scripts is
- <em>text+x</em>.</p>
- <p>The easy way to get this set properly is to make the file
- executable in the client workspace before adding it to the
- depot. Perforce will set the type properly from that. If the file
- doesn't exist, you can use <code>p4 add -t text+x
- <em>filename</em></code> to set the file type. If it has already been
- added, or is being edited, use <code>p4 reopen -t text+x
- <em>filename</em></code>. If the file is not open for editing, then
- you must edit it, and can use <code>p4 edit -t text+x
- <em>filename</em></code>. These commands will set the file type to
- executable when the file is submitted to the depot, and the next sync
- on the server will make the file executable there.</p>
- </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 222 | Mike Meyer | Add unneeded <A> tags so that a really, really badly written browsers (like Netscap...e Navigator) can find internal links. « |
26 years ago | |
#3 | 221 | Mike Meyer | Add "How do I make my scripts executable" Q & A. | 26 years ago | |
#2 | 220 | Mike Meyer | Minor correction of the english before public announcement. | 26 years ago | |
#1 | 217 | Mike Meyer | Rename the WCM FAQ to the top level. | 26 years ago | |
//guest/mike_meyer/perforce/WCM-FAQ.html | |||||
#6 | 208 | Mike Meyer | Split "How can I test my web server" into a separate question. | 26 years ago | |
#5 | 206 | Mike Meyer | Actually get the changes that are in the buffer. | 26 years ago | |
#4 | 205 | Mike Meyer | Changes from Donna Inches. | 26 years ago | |
#3 | 203 | Mike Meyer | Change differences to note the problems with the environment not being replicable to each... developer, etc. « |
26 years ago | |
#2 | 200 | Mike Meyer | Include the changes from Baj. | 26 years ago | |
#1 | 199 | Mike Meyer |
Add first version of a WCM faq. Put in checkfor.py for the FAQ to refer to. |
26 years ago |