LDP/LDP/guide/docbook/LDP-Author-Guide/cvs.xml

250 lines
11 KiB
XML

<section id="cvs">
<title> CVS </title>
<para>
The LDP is providing CVS access to authors. There are a few
good reasons for this:
</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<listitem>
<para> CVS will keep an off-site backup of your documents. In
the event that you hand over a document to another author,
they can just retrieve the document from CVS and continue
on. In the event you need to go back to a previous version of
a document, you can retrieve it as well. </para>
</listitem>
<listitem>
<para> It's great to have many people working on the same
document. You can have CVS tell you what changes were made
while you were editing your copy by another author, and
integrate those changes in. </para>
</listitem>
<listitem>
<para>CVS keeps a log of what changes were made. These logs (and
a date stamp) can be placed automatically inside the document
when you use some special tags that get processed before the
SGML processor. </para>
</listitem>
<listitem>
<para> It can provide for a way for a program to automatically
update the LDP web site with new documentation as it's written
and submitted. This is not in place yet, but it is a potential
goal. Currently, CVS updates signal the HOWTO coordinator to
update the LDP web page, meaning that if you use CVS, you're not
required to e-mail your SGML code. </para>
</listitem>
</orderedlist>
<para> If you're completely new to CVS, there are a few web pages
you may want to look at which can help you out: </para>
<itemizedlist>
<listitem>
<para> <ulink
url="http://cvshome.org/docs/blandy.html">http://cvshome.org/docs/blandy.html</ulink>
</para>
</listitem>
<listitem>
<para> <ulink
url="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">http://www.loria.fr/~molli/cvs/doc/cvs_toc.html</ulink></para>
</listitem>
</itemizedlist>
<section id="getaccount">
<title> Getting a CVS account </title>
<para> First you'll need to get an account at the LDP's CVS
Repository. This is pretty much the root directory that is used
by CVS, with various projects (HOWTOs, mini HOWTOs, etc.)
created as subdirectories of it. </para>
<para>Please fill the form:
<ulink url="http://linuxdoc.org/cvs/">
http://linuxdoc.org/cvs/</ulink>
</para>
<para>During filling the form we want you to inform us about
your plans, eg. which Howto you maintain.
</para>
<para>Your unique
CVSROOT directory will be created and you'll get an e-mail with
a response. When you get your response, log into your CVSROOT
and make sure everything is set up properly: </para>
<screen format="linespecific">
<prompt>bash$</prompt> <command>export CVSROOT=:pserver:<replaceable>your_userid</replaceable>@cvs.linuxdoc.org:/cvsroot</command>
<prompt>bash$</prompt> <command>cvs -d $CVSROOT login</command>
</screen>
<para> (Replace the <replaceable>your_userid</replaceable> with what
you were sent in the response e-mail). </para>
<para> You will be asked for your password, and then be given
access to the CVS Repository in read-write mode. Once you've
used <command moreinfo="none">cvs login</command> once and have
been given access to the system, your password is stored in
<filename moreinfo="none">.cvspass</filename> and you will not
have to use <command moreinfo="none">cvs login</command>
again. Just set the CVSROOT and continue on. You can get the
entire repository with this command: </para>
<screen>
<prompt>bash$</prompt> <command>cvs get LDP</command>
</screen>
<para> Or you can get the SGML source for your own document with
these commands: </para>
<screen format="linespecific">
<prompt>bash$</prompt> <command>cvs get LDP/howto/docbook/YOUR-HOWTO.sgml</command>
<prompt>bash$</prompt> <command>cvs get
guide/docbook/YOURGUIDE</command>
</screen>
</section>
<section id="othercvsnotes">
<title> Other CVS repository notes </title>
<section id="cvsweb">
<title> CVS Files via web </title>
<para> You can access the CVS repository via the web at <ulink
url="http://cvsview.linuxdoc.org/">http://cvsview.linuxdoc.org/</ulink>.
</para>
</section>
<section id="cvsgraphics">
<title> Graphical access to CVS </title>
<para> There are graphical interfaces to CVS, and you can get
a list of them at <ulink
url="http://freshmeat.net/appindex">http://freshmeat.net/appindex</ulink>.
Search for CVS. </para>
</section>
</section>
<section id="commoncvscommands">
<title>Common CVS Commands</title>
<section id="updatingcvs">
<title>Updating files and CVS </title>
<para> CVS has a special tag, <emphasis>$Id&dollar;</emphasis>, that you
can use to automatically insert the date and version directly
into the document. After committing, CVS will turn this tag into
<emphasis>$Id$
</emphasis>. By including this tag in your document, you
can have that automatically change each time you change the
file, allowing the revision mark to increment each time. </para>
<para> When you're ready to upload changes to the CVS server,
use the command <command moreinfo="none">cvs ci -m
&quot;comment&quot; YOUR-HOWTO.sgml</command>. The -m
&quot;comment&quot; isn't necessary, but if you don't include
it, you'll be brought into the editor (usually vi, or whatever
your <envar>EDITOR</envar> environment variable is) and be given
the chance to add a comment about the changes. </para>
<para> You can follow more of the CVS discussion on the
discuss list. </para>
<para>If you are using the LDP CVS tree while developing your
document, the LDP will need to be notified when your
document is ready to be published. There are two methods:</para>
<itemizedlist>
<listitem>
<para>You can add to the CVS commit message a text similar to
"- ready for publish."</para>
</listitem>
<listitem>
<para>You can notify us by e-mail. E-mail should be sent to
<email>submit@linuxdoc.org</email>. Indicate within the message
the title of your document and the relative path to the
file(s) in the LDP CVS tree. </para>
</listitem>
</itemizedlist>
<para>We prefer CVS users to trigger a publishing operation thru their
'commits' message.</para>
</section>
<section id="addnewcvs">
<title>Adding new files</title>
<para>
If your document contains graphics or multiple files, you
may come to a point where you need to add new files to
your cvs repository.
</para>
<para>
To do this, make sure that your HOWTO is in its own directory.
You may want to coordinate with the people at
<email>submit@linuxdoc.org</email> to ensure you can
add graphics or other files to your HOWTO.
</para>
<para>
Once this is set up, use <command>cvs get</command> to get
the latest copy of your HOWTO. In most cases, the command
will be similar to <command>cvs get LDP/howto/docbook/YOUR-HOWTO/</command>
assuming that your CVSROOT is set.
</para>
<para>
Copy in the files that you want to add to the repository.
The command <command>cvs add <replaceable>filename</replaceable></command>
will tell the CVS server that you want to add
<replaceable>filename</replaceable> to the repository.
You can now use <command>cvs commit</command> to commit
the changes to the CVS server. When finished, the files
are now part of the repository.
</para>
</section>
<section id="tagrelease">
<title>Creating Tag Releases</title>
<para>
Occasionally, you may want to create what you call a stable
release. This is an effective way to signal to the
LDP coordinator that your document is ready for release.
This tag release indicates a specific version of your
HOWTO. This allows you to continue creating new versions
of your HOWTO without them being accidentally put
on the web site.
</para>
<para>
The downside of creating a stable (or tag) release is that
it uses the current version of the files - the last
ones submitted. Use <command>cvs commit</command> to
make sure that your files are synced up, then use
<command>cvs -q tag <replaceable>Release-x_y</replaceable></command>.
</para>
<para>
You can replace the <replaceable>Release-x_y</replaceable> with
whatever you like. However, to create a wall between CVS revisions
and tag releases, the tag release nust start with a letter,
and contain letters, numbers, hyphens, or underscores.
</para>
</section>
<section id="recovery">
<title>Recovering old versions</title>
<para>
There you are, typing away, when you screw up. Real bad.
Doesn't matter what it is, but suffice it to say that you've
toasted not only the version on your local drive, but
created a new version on the CVS server. What you need
to do is go back in time and resurrect and older
version of your file.
</para>
<para>
To do this, you'll need to know the version number of the
file you want to retrieve. <command>cvs diff</command>
will give a list of revisions if there are differences. You
can pick the revision number, subtract one, and that is
probably the revision you want to look at.
</para>
<para>
The command <command>cvs -Q update -p -r <replaceable>revision</replaceable></command>
<replaceable>filename</replaceable> will output to stdout
the contents of the <replaceable>revision</replaceable> version
of <replaceable>filename</replaceable>. You can pipe it to
<command>more</command> or redirect the output to a file.
Conveniently, you can redirect stdout to a file called
<replaceable>filename</replaceable>. Your local file
is now the revision you want, and <command>cvs update
</command> will update the CVS server with the new (old)
version of <replaceable>filename</replaceable>.
</para>
</section>
</section>
</section>