<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>cvs</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="../style.css" type="text/css" /> <link rel="stylesheet" href="../local.css" type="text/css" /> </head> <body> <div class="page"> <div class="pageheader"> <div class="header"> <span> <span class="parentlinks"> <a href="../index.html">ikiwiki</a>/ <a href="../rcs.html">rcs</a>/ </span> <span class="title"> cvs </span> </span> </div> </div> <div id="pagebody"> <div id="content" role="main"> <div class="infobox"> Available in a <a href="../git.html">git</a> repository <a href="../branches.html">branch</a>.<br /> Branch: schmonz/cvs<br /> Author: <span class="createlink">schmonz</span><br /> </div> <p>If you really need to, you can use <a href="https://en.wikipedia.org/wiki/Concurrent%20Versions%20System">CVS</a> with ikiwiki.</p> <h3>Usage</h3> <ol> <li>Install <a href="http://search.cpan.org/search?mode=dist&query=File%3A%3Achdir">File::chdir</a>, <a href="http://search.cpan.org/search?mode=dist&query=File%3A%3AReadBackwards">File::ReadBackwards</a>, <a href="http://www.cobite.com/cvsps/">cvsps</a> (note: probably not <a href="http://www.catb.org/~esr/cvsps/">cvsps3</a>), and <a href="http://www.freebsd.org/projects/cvsweb.html">cvsweb</a> or the like.</li> <li>Adjust CVS-related parameters in your setup file.</li> </ol> <p>Consider creating <code>$HOME/.cvsrc</code> if you don't have one already; the plugin doesn't need it, but you yourself might. Here's a good general-purpose one:</p> <pre><code>cvs -q checkout -P update -dP diff -u rdiff -u </code></pre> <h3>Implementation details</h3> <ul> <li><a href="../ikiwiki-makerepo.html">ikiwiki-makerepo</a>: <ul> <li>creates a repository,</li> <li>imports <code>$SRCDIR</code> into top-level module <code>ikiwiki</code> (vendor tag IKIWIKI, release tag PRE_CVS),</li> <li>configures the post-commit hook in <code>CVSROOT/loginfo</code>.</li> </ul></li> </ul> <h3>To do</h3> <ul> <li>Expand test coverage and fix bugs.</li> <li>Have <code>ikiwiki-makerepo</code> set up NetBSD-like <code>log_accum</code> and <code>commit_prep</code> scripts that coalesce commits into changesets. Reasons: <ol> <li>Obviates the need to scrape the repo's complete history to determine the last N changesets. (Repositories without such records can fall back on the <code>cvsps</code> and <code>File::ReadBackwards</code> code.)</li> <li>Arranges for ikiwiki to be run once per changeset, rather than CVS's once per committed file (!), which is a waste at best and bug-inducing at worst. (Currently, on multi-directory commits, only the first directory's changes get mentioned in <a href="../plugins/recentchanges.html">recentchanges</a>.)</li> </ol></li> <li>Perhaps prevent web edits from attempting to create <code>.../CVS/foo.mdwn</code> (and <code>.../cvs/foo.mdwn</code> on case-insensitive filesystems); thanks to the CVS metadata directory, the attempt will fail anyway (and much more confusingly) if we don't.</li> <li>Do a writeup for <a href="./details.html">details</a>.</li> </ul> </div> </div> <div id="footer" class="pagefooter" role="contentinfo"> <div id="pageinfo"> <div class="tags"> Tags: <a href="../branches.html" rel="tag">branches</a> <a href="../git.html" rel="tag">git</a> </div> <div id="backlinks"> Links: <a href="../consultants.html">consultants</a> <a href="./details.html">details</a> <a href="../rcs.html">rcs</a> </div> <div class="pagedate"> Last edited <span class="date">Tue Feb 26 23:01:54 2019</span> <!-- Created <span class="date">Tue Feb 26 23:01:54 2019</span> --> </div> </div> <!-- from ikiwiki --> </div> </div> </body> </html>