You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3225 lines
113 KiB
3225 lines
113 KiB
15 years ago
|
<?xml version="1.0" ?>
|
||
|
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||
|
<!ENTITY kappname "&cervisia;">
|
||
|
<!ENTITY package "kdesdk">
|
||
|
<!ENTITY ssh "<command>ssh</command>">
|
||
|
<!ENTITY rsh "<command>rsh</command>">
|
||
|
<!ENTITY % addindex "IGNORE">
|
||
|
<!ENTITY % English "INCLUDE"> <!-- Change language only here -->
|
||
|
<!ENTITY CVS "<application>CVS</application>">
|
||
|
]>
|
||
|
|
||
|
<book lang="&language;">
|
||
|
|
||
|
<bookinfo>
|
||
|
<title>&cervisia; Manual</title>
|
||
|
<authorgroup>
|
||
|
<author>
|
||
|
<firstname>Bernd</firstname><surname>Gehrmann</surname>
|
||
|
<affiliation><address><email>bernd@mail.berlios.de</email></address></affiliation>
|
||
|
</author>
|
||
|
<author>
|
||
|
<firstname>Carlos</firstname><surname>Woelz</surname>
|
||
|
<affiliation><address><email>carloswoelz@imap-mail.com</email></address></affiliation>
|
||
|
</author>
|
||
|
|
||
|
|
||
|
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||
|
|
||
|
</authorgroup>
|
||
|
|
||
|
<copyright>
|
||
|
<year>1999</year>
|
||
|
<year>2000</year>
|
||
|
<year>2001</year>
|
||
|
<year>2002</year>
|
||
|
<holder>Bernd Gehrmann</holder>
|
||
|
</copyright>
|
||
|
|
||
|
<copyright>
|
||
|
<year>2004</year>
|
||
|
<holder>Carlos Woelz</holder>
|
||
|
</copyright>
|
||
|
|
||
|
<legalnotice>&FDLNotice;</legalnotice>
|
||
|
|
||
|
<date>2004-06-06</date>
|
||
|
<releaseinfo>2.01.90</releaseinfo>
|
||
|
|
||
|
<abstract>
|
||
|
<para>&cervisia; provides a graphical view of &CVS;.</para>
|
||
|
</abstract>
|
||
|
|
||
|
<keywordset>
|
||
|
<keyword>KDE</keyword>
|
||
|
<keyword>kdesdk</keyword>
|
||
|
<keyword>Cervisia</keyword>
|
||
|
<keyword>CVS</keyword>
|
||
|
<keyword>version control</keyword>
|
||
|
<keyword>revision control</keyword>
|
||
|
</keywordset>
|
||
|
|
||
|
</bookinfo>
|
||
|
|
||
|
<chapter id="introduction">
|
||
|
<title>Introduction</title>
|
||
|
|
||
|
<para>
|
||
|
<ulink url="http://www.kde.org/apps/cervisia/">&cervisia;</ulink> is a
|
||
|
user friendly version control system front-end. The aim is to support &CVS; and
|
||
|
other version control system programs in a unified interface, featuring conflict
|
||
|
resolution, difference and history viewers, status for the working copy files,
|
||
|
and support for most version control functions. You can get &cervisia;
|
||
|
by building the kdesdk module or installing the kdesdk package provided by your
|
||
|
distribution. Currently, only &CVS; is supported, but other version control
|
||
|
systems may be integrated in the future.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
A version control system is a tool to record, manage, and distribute
|
||
|
different versions of files. &CVS; is a version control system. It allows you
|
||
|
to share your modifications easily, as each of the contributors can work on their
|
||
|
local copy at the same time, without fear of overwriting each others'
|
||
|
modifications. It allows the recovery of past versions (useful for tracking
|
||
|
bugs), the creation of branches (for experimental development or for releases
|
||
|
of code) and more.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The main <firstterm>repository</firstterm> usually holds a collaborative
|
||
|
project (commercial or not), but you can take advantage of the nice revision
|
||
|
control features offered by &CVS; even for a project developed exclusively by
|
||
|
you. It is easy to set up a local repository, and you will gain the ability to
|
||
|
track changes that caused bugs, revert changes, avoid accidental loss of
|
||
|
information, &etc;.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The repository holds the project files, and every contributor keeps their
|
||
|
own local copy, named <firstterm>working copy</firstterm> or
|
||
|
<firstterm>sandbox</firstterm>; one can then add their modifications to the main
|
||
|
repository (a process called "committing") and/or update their own
|
||
|
copy to reflect recent changes made by other contributors.
|
||
|
</para>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="getting-started">
|
||
|
<title>Getting Started</title>
|
||
|
|
||
|
<sect1 id="accessing-repository">
|
||
|
<title>Accessing The Repository</title>
|
||
|
|
||
|
<para>
|
||
|
In this section, we show how to use the basic version control system
|
||
|
functionality using &cervisia; to checkout modules from the
|
||
|
repository and work with them. To do that, you must have access to the
|
||
|
repository as a client, meaning that someone (probably the administrator of
|
||
|
the &CVS; repository) gave you an account on the server machine. Alternatively,
|
||
|
you can easily create a local repository for your own project.
|
||
|
</para>
|
||
|
|
||
|
<tip><para>
|
||
|
If you plan to develop a complex project, it is a good idea to use the
|
||
|
&CVS; features, even if you are the only developer. You can make all changes in
|
||
|
the working copy, and use &cervisia; (or any other &CVS; tool) to update and
|
||
|
commit. This way, you will gain the ability to track changes that caused bugs,
|
||
|
revert changes, avoid accidental loss of information, &etc;. Using &cervisia;, it
|
||
|
is simple to create a local repository.
|
||
|
</para>
|
||
|
|
||
|
<procedure>
|
||
|
<title>Creating a Local Repository</title>
|
||
|
|
||
|
<step><para>
|
||
|
Open the <guilabel>Create New Repository (cvs init)</guilabel>
|
||
|
dialog by choosing
|
||
|
<menuchoice><guimenu>Repository</guimenu>
|
||
|
<guimenuitem>Create...</guimenuitem></menuchoice>.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Press the <guilabel>...</guilabel> button to select the folder where you want to
|
||
|
create the repository, or enter its location in the text box. For instance, if you
|
||
|
want to place the repository in the <filename>/home/user</filename> folder, and
|
||
|
to name it <filename>cvsroot</filename>, you should type
|
||
|
<filename>/home/user/cvsroot</filename> in the text box, or select the
|
||
|
<filename>/home/user</filename> folder using the file picker, and add
|
||
|
<filename>cvsroot</filename>.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Confirm by pressing the <guibutton>OK</guibutton>
|
||
|
button. &cervisia; will create and initialize the new repository folder.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Now you can import your current work to the repository, or simply create a
|
||
|
folder in the repository to start a new module from scratch.
|
||
|
</para></step>
|
||
|
|
||
|
</procedure>
|
||
|
|
||
|
</tip>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
&cervisia; offers an integrated front-end to manage all your repository
|
||
|
locations, the <guilabel>Configure Access to Repositories</guilabel> dialog.
|
||
|
To display it, select the <menuchoice><guimenu>Repository</guimenu>
|
||
|
<guimenuitem>Repositories...</guimenuitem></menuchoice> menu item.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-repositories" float="1">
|
||
|
<title>A screenshot of &cervisia;'s Configure Access to Repositories dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="repositories.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s Configure Access to
|
||
|
Repositories dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
There are several methods to access a CVS repository. It may be reached via
|
||
|
password authentication (:pserver:), secure shell (using :ext:), local
|
||
|
repository (:local:), &etc;. The format for the repository location is
|
||
|
(optional items appear between square brackets):
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<filename>[:method:][[user][:password]@]hostname[:[port]]/path/to/repository</filename>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Not all these items (user, password, hostname, port) are always necessary
|
||
|
to access the repository. The required information depends on the access method
|
||
|
used, which can be categorized as follows:
|
||
|
</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>Local</term>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The local access method is the default method used by &CVS;. Therefore, it is
|
||
|
optional to add the :local: method to the repository location: you can enter
|
||
|
simply the path to the folder which stores the &CVS;
|
||
|
repository, and is accessible from your computer, like
|
||
|
<filename class="directory">/path/to/repository</filename> or to give a real
|
||
|
life example, <filename class="directory">/home/cvs</filename>.</para>
|
||
|
|
||
|
<para>
|
||
|
It may physically be on a disk which is mounted via <acronym>NFS</acronym>,
|
||
|
but this is an irrelevant detail. If you created a local repository, the
|
||
|
location will be simple the path to it.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="rsh">
|
||
|
<term>rsh</term>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The repository location is something like
|
||
|
<filename>:ext:username@host.url.org:/path/to/repository</filename>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This method requires that you have a user account on the server machine (in
|
||
|
this example, <systemitem class="systemname">host.url.org</systemitem>) and
|
||
|
use a remote shell for communication. By default, &CVS; uses ↱ for this
|
||
|
purpose; however, ↱ has long considered to be insecure, and is widely
|
||
|
replaced by &ssh;.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you wish to use &ssh;, you must set the environment variable
|
||
|
$<envar>CVS_RSH</envar> to &ssh; when using the <command>cvs</command>
|
||
|
client. &cervisia; supports this easily.
|
||
|
</para>
|
||
|
|
||
|
<!-- TODO: verify if the above still apply -->
|
||
|
|
||
|
<para>
|
||
|
Note that &cervisia; cannot answer possible password requests from the
|
||
|
server machine. You must make sure that a remote login works without requiring
|
||
|
you to enter the password. With plain vanilla ↱, this can be achieved for
|
||
|
example by creating a <filename>.rhosts</filename> file in your home folder
|
||
|
with a list of trusted hosts (see the ↱ manpage).
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
With &ssh;, it can be achieved by copying your public key located in the file
|
||
|
<filename>identity.pub</filename>, located in the
|
||
|
<filename>$<envar>HOME</envar>/.ssh/</filename> folder to the server. In this
|
||
|
case, the key must not be encrypted with a passphrase (see the &ssh; manpage and
|
||
|
the &CVS;/<acronym>SSH</acronym> <acronym>FAQ</acronym> on
|
||
|
SourceForge). If you are unsure about these issues, ask your system
|
||
|
administrator.
|
||
|
</para>
|
||
|
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term>pserver</term>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The repository location looks like
|
||
|
<filename>:pserver:username@host.url.org:/path/to/repository</filename>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This method accesses the server via a special protocol with a relatively weak
|
||
|
authentication (<literal>pserver</literal> stands for password
|
||
|
authentication). Before you can use such a server, you need a username and
|
||
|
password given by the &CVS; server administrator, and you have to login. Note
|
||
|
that your &CVS; password authentication username does not necessarily match the
|
||
|
system's username. Before accessing the &CVS; server, you will need to login.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Open-source projects typically offer Anonymous CVS access to their
|
||
|
sources. This means you can easily grab the latest sources, modify, and create
|
||
|
patches (differences) against the repository without asking for a CVS account.
|
||
|
As a general rule, Anonymous CVS uses password authentication (:pserver:), and
|
||
|
is a read-only repository, not allowing you to upload your changes directly.
|
||
|
</para>
|
||
|
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
|
||
|
<para>
|
||
|
Knowing the access method and location to the repository, you can add it
|
||
|
to &cervisia;'s repositories list:
|
||
|
</para>
|
||
|
|
||
|
<procedure>
|
||
|
<title>Adding a New Repository</title>
|
||
|
|
||
|
<step><para>
|
||
|
Open the <guilabel>Configure Access to Repositories</guilabel> dialog by
|
||
|
choosing the <menuchoice><guimenu>Repository</guimenu>
|
||
|
<guimenuitem>Repositories...</guimenuitem></menuchoice> menu item.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Press the <guilabel>Add...</guilabel> button to open the
|
||
|
<guilabel>Add Repository</guilabel> dialog.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Enter the repository location in the <guilabel>Repository:</guilabel> text box.
|
||
|
&cervisia; will automatically disable the areas of the dialog that are not
|
||
|
relevant to the access method you entered.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
If you are using the ext method to access the repository, enter the remote shell
|
||
|
you wish to use (⪚ &ssh;) in the <guilabel>Use remote shell (only for :ext:
|
||
|
repositories):</guilabel> text box.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Press <guibutton>OK</guibutton>. You will see the repository you just entered
|
||
|
on the repositories list.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
If the access method to the repository you just entered is password
|
||
|
authentication (pserver), you will need to login before connecting the server.
|
||
|
Click the repository on the list to select it, and press the
|
||
|
<guilabel>Login...</guilabel> button. Enter your password in the upcoming dialog.
|
||
|
</para>
|
||
|
<para>
|
||
|
If you successfully enter your password, the <guilabel>Status</guilabel>
|
||
|
column entry of the pserver repository will change from
|
||
|
<guilabel>Not logged in</guilabel> to <guilabel>Logged in</guilabel>.
|
||
|
</para></step>
|
||
|
|
||
|
<step><para>
|
||
|
Press <guibutton>OK</guibutton> to apply your modifications, or add another
|
||
|
location to the list. &cervisia; will store as many locations as you like.
|
||
|
</para></step>
|
||
|
|
||
|
</procedure>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="importing">
|
||
|
<title>Importing a Module Into the Repository</title>
|
||
|
|
||
|
<para>
|
||
|
In this section, we discuss how you can put a new project into the &CVS;
|
||
|
repository. If you just want to work with an existing project which is already
|
||
|
in a repository, you may skip this section.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
There are two ways to put a project into the &CVS;:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
Import the files and folders to a new <firstterm>module</firstterm>, using
|
||
|
&cervisia;'s import dialog. Modules are the top folders in the &CVS; repository
|
||
|
folder tree, and are used to separate and organize the different software
|
||
|
projects inside the repository.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Create an empty module and add the new files and folders manually. You will have
|
||
|
more control, but it will probably take a little more time.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<important>
|
||
|
<para>
|
||
|
Keep in mind that &CVS; was initially designed to handle
|
||
|
text files. Many features, like revision merging, creating differences in a
|
||
|
readable form, &etc; are only performed to text files. This does not mean you
|
||
|
cannot use CVS to keep binary files, it just means you have to
|
||
|
<emphasis>explicitly tell CVS if it is a text or binary file</emphasis>. If
|
||
|
you declare the wrong file type, you will experience problems with the &CVS;
|
||
|
functionality for these files, and they may get corrupted.
|
||
|
</para>
|
||
|
</important>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
Importing a project (as a new module) has some advantages: you will import all
|
||
|
files and folders recursively, and the module will automatically be created
|
||
|
for you. This makes importing large existing projects to the repository
|
||
|
easier. However, there are some disadvantages: you cannot use &cervisia;'s import
|
||
|
dialog to add files to existing modules, and you can either import the files
|
||
|
as text or binary files. You can work around this limitation by creating a
|
||
|
folder with files of only one of the types, or by informing the patterns
|
||
|
of the files that should be ignored during the import process.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For instance, suppose your project contains text files and some PNG images
|
||
|
(binary files) only. You can tell &CVS; to ignore all files with the pattern
|
||
|
<filename class="extension">*.png</filename> while importing the other files as
|
||
|
text, or you can move the images to a separate folder, and then import
|
||
|
the remaining files (as text files). Either way, you will have to
|
||
|
<link linkend="checkingout">checkout</link> the newly imported module to a
|
||
|
new working copy, copy the missing files and folders to it,
|
||
|
<link linkend="addingfiles">add</link> and
|
||
|
<link linkend="committingfiles">commit</link> them to the repository to complete
|
||
|
the import process.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
As an alternative, you can add the files and folders manually, creating an empty
|
||
|
module for them. To add an empty module to a repository, just create a new
|
||
|
folder in the &CVS; repository root folder. The name of this new folder will be
|
||
|
the name of the module. <link linkend="checkingout">Checkout</link> the new
|
||
|
empty module. Then copy the files and folders to the working copy,
|
||
|
<link linkend="addingfiles">add</link> and
|
||
|
<link linkend="committingfiles">commit</link> to upload them to the &CVS;
|
||
|
repository.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<figure id="screenshot-import" float="1">
|
||
|
<title>A screenshot of &cervisia;'s import dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="import.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s import dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
In <xref linkend="screenshot-import"/> you can see the dialog which helps you
|
||
|
to <emphasis>import</emphasis> a project as a module. To access &cervisia;'s
|
||
|
import dialog, choose the <menuchoice><guimenu>Repository</guimenu>
|
||
|
<guimenuitem>Import...</guimenuitem></menuchoice>
|
||
|
menu item.
|
||
|
</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Repository:</guilabel> <xref linkend="co-repository" /></term>
|
||
|
<listitem><para>
|
||
|
Enter or select on the dropdown list the name of the &CVS; repository, also
|
||
|
known as $<envar>CVSROOT</envar>. You must have write access to it, and the
|
||
|
repository must be properly initialized. If the repository does not yet exist,
|
||
|
you can create one choosing the
|
||
|
<menuchoice>
|
||
|
<guimenu>Repository</guimenu>
|
||
|
<guimenuitem>Create...</guimenuitem>
|
||
|
</menuchoice>
|
||
|
menu item.
|
||
|
</para>
|
||
|
<para>
|
||
|
The drop down box shows a
|
||
|
list of the repositories you previously entered using the <guilabel>Configure
|
||
|
Access to Repositories</guilabel> dialog box. If the repository is remote,
|
||
|
make sure that authentication works. See <xref
|
||
|
linkend="accessing-repository"/> for more information.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Module:</guilabel> <xref linkend="co-module" /></term>
|
||
|
<listitem><para>
|
||
|
The name of the module under which the project will be stored. After
|
||
|
the import, the project can be checked out under this name. See
|
||
|
<xref linkend="checkingout"/> for more information. This is also the name of
|
||
|
the corresponding folder in the repository.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Working Folder:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The toplevel folder of the project you want to import. The import
|
||
|
starts from this folder and goes down recursively.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Vendor tag:</guilabel> <xref linkend="co-vendortag" /></term>
|
||
|
<listitem><para>
|
||
|
The vendor tag is historically used for tracking third-party sources. Just use
|
||
|
your user name if you have no better idea. It does not matter much what you
|
||
|
enter here.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Release tag:</guilabel> <xref linkend="co-releasetag" /></term>
|
||
|
<listitem><para>
|
||
|
This tag is also historically used for importing different versions of
|
||
|
third-party software. If you are not doing this, use the word
|
||
|
<literal>start</literal> or a string <literal>FOO_1_0</literal> where
|
||
|
<literal>FOO</literal> is the name of your project and <literal>1.0</literal>
|
||
|
is the version number of the imported release.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Ignore files:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
If you fill out this field, an additional <option>-I <replaceable>file names</replaceable></option>
|
||
|
option is given go the <command>cvs import</command> command. This entry is
|
||
|
interpreted as a whitespace-separated list of file name patterns which are
|
||
|
ignored. In general, a cleaner and less error-prone way to control which files
|
||
|
go into the repository is to create a folder with only the files which you
|
||
|
want to import and start from that. Nevertheless, this entry may be useful if
|
||
|
the project contains files which are by default ignored by &CVS;, ⪚ files
|
||
|
with the name <filename>core</filename>. In such a case, simply enter the
|
||
|
character <literal>!</literal> in this field: this overrules &CVS;'s scheme of
|
||
|
ignored files, see <xref linkend="ignoredfiles"/>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Comment:</guilabel> <xref linkend="co-comment" /></term>
|
||
|
<listitem><para>
|
||
|
Use this field to record the comments you might have about the origin, use,
|
||
|
development, &etc; of the files you are importing.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Import as binaries</guilabel></term>
|
||
|
<listitem><para>
|
||
|
If you check this box, all files are imported in binary mode, i.e. an argument
|
||
|
<option>-kb</option> is given to <command>cvs import</command>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Use file's modification as time of import</guilabel></term>
|
||
|
<listitem><para>
|
||
|
If you check this box, the time of import will be the file's modification time
|
||
|
instead of the import time.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
|
||
|
<para>After you have filled out this form and confirmed by
|
||
|
pressing <guibutton>OK</guibutton>, the following &CVS; command is used:</para>
|
||
|
|
||
|
<screen><command>cvs</command> -d <co id="co-repository"></co><replaceable>repository</replaceable> import -m "<co id="co-comment"></co>" <co id="co-module"></co><replaceable>module</replaceable> <co id="co-vendortag"></co><replaceable>vendortag</replaceable> <co id="co-releasetag"></co><replaceable>releasetag</replaceable></screen>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="checkingout">
|
||
|
<title>Checkout a Module From the Repository</title>
|
||
|
<para>
|
||
|
Now that you successfully defined your repository location, and imported the
|
||
|
initial files to the repository, it is time to retrieve the module from the
|
||
|
&CVS; repository, creating your working copy.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You should also know the name of the <firstterm>branch</firstterm> or
|
||
|
<firstterm>tag</firstterm> you want to use.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Branches of a module are parallel versions of this module. A good real-life
|
||
|
example of the use of this feature is the release of a software project. After a
|
||
|
major release, there are bugs in the code that should be fixed, but people want
|
||
|
to add new features to the application too. It is very hard to do both at the
|
||
|
same time because new features usually introduce new bugs, making it hard to
|
||
|
track down the old ones. To solve this dilemma, &CVS; lets you create a parallel
|
||
|
version, that we will call the "stable release branch", where you can
|
||
|
only add bugfixes, leaving the main branch (HEAD) open for adding new features.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Tags are used to mark a version of a project. &CVS; stamps one
|
||
|
version of each file with the tag, so when you checkout or
|
||
|
update to a specific tag, you will get always the same file versions.
|
||
|
Therefore, in opposition to branches, tags are not dynamic: you cannot develop a
|
||
|
tag. Tags are useful to mark releases, big changes in the code, &etc;.
|
||
|
Using tags, you can easily return the project to a previous state, to reproduce and
|
||
|
track bugs, generate the release code again, &etc;.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-checkout" float="1">
|
||
|
<title>A screenshot of &cervisia;'s checkout dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="checkout.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s checkout dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Repository:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The name of the &CVS; repository, also known as
|
||
|
<filename><envar>$CVSROOT</envar></filename>. The drop-down box shows a
|
||
|
list of the repositories you previously entered using the <guilabel>Configure
|
||
|
Access to Repositories</guilabel> dialog box. If the repository is remote,
|
||
|
make sure that authentication works. See <xref
|
||
|
linkend="accessing-repository"/> for more information.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Module:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The name of the module to be checked out. If you are working with an existing
|
||
|
repository, you can probably get this name from the system administrator;
|
||
|
or, if it is an open-source repository, you can get the module names from the
|
||
|
project web pages. If you want to create a new module from scratch using a local
|
||
|
repository, just create a new folder in the local repository root folder. The
|
||
|
name of the folder will be the same as the name of the empty module.
|
||
|
</para>
|
||
|
<para>
|
||
|
Alternatively, if the repository has a
|
||
|
<filename><envar>$CVSROOT</envar>/modules</filename> file, you can retrieve a
|
||
|
list of available modules by pressing the <guibutton>Fetch list</guibutton>
|
||
|
button.
|
||
|
</para>
|
||
|
<para>
|
||
|
Note that it is possible to checkout any existing subfolder of the module,
|
||
|
without retrieving the rest of the module. Just enter the path to the subfolder
|
||
|
as well. For instance, if you want to get only the
|
||
|
<filename class="directory">doc/cervisia</filename> subfolder of the kdesdk
|
||
|
module, enter <filename class="directory">kdesdk/doc/cervisia</filename> in this
|
||
|
field.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Branch tag:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The name of the branch or tag you want to check out. If you leave this field
|
||
|
empty, &cervisia; will retrieve the main (HEAD) branch.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Working folder:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The folder under which the module should be checked out. Note that the
|
||
|
the working copy toplevel folder is named after the module you are retrieving,
|
||
|
unless you give it an alternative name in the <guilabel>Check out as:</guilabel>
|
||
|
field.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Check out as:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This results in the working copy files being checked out to an alternative
|
||
|
folder under the working folder rather than a folder named after the module.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Export only</guilabel></term>
|
||
|
<listitem><para>
|
||
|
If you check this box, the files will be exported rather than checked out.
|
||
|
Exporting obtains a copy of the source for the module without the CVS
|
||
|
administrative folders. For example, export may be used to prepare the
|
||
|
source code for a release.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="mainscreen">
|
||
|
<title>The Main Screen, Viewing File Status and Updating</title>
|
||
|
<para>
|
||
|
When you start &cervisia;, and open a working copy by choosing
|
||
|
<menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Open Sandbox...</guimenuitem>
|
||
|
</menuchoice>,
|
||
|
you can see two main areas in &cervisia;'s main window: the top one is a
|
||
|
hierarchical (tree) view of the current working copy; the bottom area is
|
||
|
used to display the &CVS; commands &cervisia; issues to perform its tasks, as
|
||
|
well as the output generated by these commands.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
By default, &cervisia; does not display the files contained by the sub-folders,
|
||
|
so you will have to click the folders you want to see. To display all files
|
||
|
of the working copy, select
|
||
|
<menuchoice>
|
||
|
<guimenu>View</guimenu>
|
||
|
<guimenuitem>Unfold File Tree</guimenuitem>
|
||
|
</menuchoice>.
|
||
|
To close back all folders from the working copy, choose
|
||
|
<menuchoice>
|
||
|
<guimenu>View</guimenu>
|
||
|
<guimenuitem>Fold File Tree</guimenuitem>
|
||
|
</menuchoice>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
According to the settings in your
|
||
|
<filename>.cvsignore</filename> files, the files you usually do not want to
|
||
|
include into the repository - such as object files - are not shown in the tree
|
||
|
view. For each file, you see its corresponding status. In the default setting,
|
||
|
after opening the sandbox, this is "Unknown" because &cervisia; delays the
|
||
|
fetching of information until you select the files and folders whose status you
|
||
|
want to update or view and choose
|
||
|
<menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Update</guimenuitem>
|
||
|
</menuchoice>
|
||
|
or
|
||
|
<menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Status</guimenuitem>
|
||
|
</menuchoice>. With this approach, you have a minimal
|
||
|
amount of functionality available even if you do not have a permanent
|
||
|
connection to the &CVS; server.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-mainview" float="1">
|
||
|
<title>A screenshot of &cervisia;'s main view</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="mainview.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s main view</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
The commands in the File menu usually act only on the files which you have
|
||
|
marked. You may also mark folders. Now choose
|
||
|
<menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Status</guimenuitem>
|
||
|
</menuchoice> or press <keycap>F5</keycap>. &cervisia; issues a
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs update -n <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
command to get status information for the marked files. Note that &cervisia;
|
||
|
goes recursively into subfolders only if you have the according option
|
||
|
in the <guimenu>Settings</guimenu> menu set. According to the respective
|
||
|
file's status, you now see an entry in the <guilabel>Status</guilabel> column:
|
||
|
</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Locally Modified</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This means you have modified the file compared to the
|
||
|
version in the repository.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Locally Added</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This means the file does not exist in the repository, but in
|
||
|
your working copy and you have scheduled it for addition. The actual
|
||
|
insertion into the repository only happens after a commit.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Locally Removed</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This means you have scheduled the file for removal, but it
|
||
|
still exists in the repository. The actual removal happens only after a
|
||
|
commit.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Needs Update</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This is shown if a newer version of the file exists in the
|
||
|
repository, e.g. because someone committed a modification. Normally, you want
|
||
|
to update this file so you have an up-to-date version in your folder.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Needs Patch</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This is essentially the same as before; the difference is
|
||
|
that in case of an update, the &CVS; server transfers only a patch
|
||
|
instead of the whole file to you.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Needs Merge</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Indicates that a merge of the revision of this file in your
|
||
|
working copy with the version in the repository is necessary. This
|
||
|
typically happens if you have made modifications to the file while
|
||
|
someone else has committed his modifications. If you choose to update, the
|
||
|
modifications in the repository are merged into your file. In case of a
|
||
|
conflict (i.e. if someone else has changed some of the same lines like you)
|
||
|
the new status is then "Conflict".
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Up to Date</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Indicates that the file is identical with the version in the
|
||
|
repository.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Conflict</guilabel></term>
|
||
|
<listitem><para>
|
||
|
This is shown if this file still has conflict markers in it. Maybe
|
||
|
you have previously updated the file and not resolved the conflicts.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Not In CVS</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Indicates that the file is not registered in the &CVS;
|
||
|
repository. If you want it to available for others, you should add it to the
|
||
|
repository. If not, you may consider adding it to your
|
||
|
<filename>.cvsignore</filename> file.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
<para>
|
||
|
Now that you have got an overview of the current status of the CVS, you may
|
||
|
want to do an update. Mark some files (or the root of the folder tree which
|
||
|
is equivalent to marking all files in this folder). Now choose
|
||
|
<menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Update</guimenuitem>
|
||
|
</menuchoice> (Of course, you could have chosen this at the beginning of
|
||
|
the session). For some
|
||
|
of the files the status may change now. Typically, files which had "Needs
|
||
|
Patch" or "Needs Update" are updated. So the following new items are possible
|
||
|
in the status column:
|
||
|
</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Updated</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Shown if the file was updated from the repository.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Patched</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Indicates that the &CVS; server has sent a patch for this file and
|
||
|
the patch has been successfully applied. If the patch was not successful
|
||
|
because there was a conflict between your modifications and those someone else
|
||
|
committed to the repository, the status is now <guilabel>Conflict</guilabel>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
<para>
|
||
|
You may have noticed that according to the status of the file, its row has a
|
||
|
different color. The colors are chosen to somehow reflect the priority of the
|
||
|
status. For example, a file with a conflict is marked red to show you that you
|
||
|
have to resolve a conflict before you can continue working with the file. If
|
||
|
your folder contains a high number of files, you may nevertheless lose the
|
||
|
overview. To get more concise information about which files have an unusual
|
||
|
status, simply click on the header of the <guilabel>Status</guilabel>
|
||
|
column. The file list is then sorted by priority, so you have all important
|
||
|
information at the top of the list. To get back to the alphabetically sorted
|
||
|
view, click on the header of the <guilabel>File name</guilabel> column.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="workingwithfiles">
|
||
|
<title>Working With Files</title>
|
||
|
|
||
|
<para>
|
||
|
All commonly used &CVS; functionality is directly available in &cervisia;'s
|
||
|
main view. Commands usually act on several files at once, namely all which
|
||
|
currently selected. If the selection includes folders, its interpretation
|
||
|
depends on the settings made under the <guimenu>Settings</guimenu> menu. For
|
||
|
example, if <menuchoice><guimenu>Settings</guimenu><guimenuitem>Commit and
|
||
|
Remove Recursively</guimenuitem></menuchoice> is checked and you choose
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Commit...</guimenuitem></menuchoice>
|
||
|
while a folder is selected, then all files in the tree under that folder
|
||
|
are committed. Otherwise, only the regular files in the folder itself are
|
||
|
affected.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-popup" float="1">
|
||
|
<title>A screenshot of &cervisia;'s context menu</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="popup.png"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
The most used actions are also available by right clicking the files in the tree
|
||
|
view, through the context menu. <xref linkend="screenshot-popup" /> shows
|
||
|
&cervisia;'s main window pop-up menu.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You can simply edit a file by double-clicking on it or selecting it and pressing
|
||
|
&Enter;. This starts the default application that handles that
|
||
|
file type (the default application for each file type is a KDE wide setting). If
|
||
|
the default application is not the one you want to use, you can right click the
|
||
|
file and choose the
|
||
|
<menuchoice>
|
||
|
<guisubmenu>Edit With</guisubmenu>
|
||
|
</menuchoice>
|
||
|
submenu, and select one of the other applications that handle that file type.
|
||
|
</para>
|
||
|
|
||
|
<sect1 id="addingfiles">
|
||
|
<title>Adding Files</title>
|
||
|
|
||
|
<para>
|
||
|
Adding files to a project requires two steps: first, the files must be
|
||
|
registered with &CVS;, or in other words,
|
||
|
<emphasis>added to the repository</emphasis>. This is necessary, but not
|
||
|
sufficient. In order to actually put the files into the repository, you must
|
||
|
<emphasis>commit</emphasis> them. This procedure has an important advantage:
|
||
|
you can commit the files together with modifications to other parts of the
|
||
|
project. When doing this, one can easily see (⪚ in commit emails) that all
|
||
|
these changes are part of a whole.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To this end, mark all files to be added in &cervisia;'s
|
||
|
main view. Then, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Add to
|
||
|
Repository...</guimenuitem></menuchoice>, or right click the marked files and
|
||
|
choose <guimenuitem>Add to Repository...</guimenuitem>. The
|
||
|
<guilabel>CVS Add</guilabel> dialog will appear, listing the files you marked, and
|
||
|
asks for confirmation. Press <guibutton>OK</guibutton>.
|
||
|
</para>
|
||
|
|
||
|
<para>&cervisia; issues a command</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs add <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If the operation was successful, the status column should have "Added to
|
||
|
repository" for the added files.
|
||
|
</para>
|
||
|
|
||
|
<warning><para>
|
||
|
&CVS; is not designed to provide meaningful revision control for binary
|
||
|
files. For example, merging binary files normally does not make
|
||
|
sense. Furthermore, by default &CVS; performs keyword expansion (⪚ on the
|
||
|
string <literal>$Revision: 1.6 $</literal>) when a file is committed. In binary
|
||
|
files, such replacements may corrupt the file and make it completely
|
||
|
unusable.
|
||
|
</para></warning>
|
||
|
|
||
|
<para>
|
||
|
In order to switch the above behavior off, you should commit binary files
|
||
|
(or other files, like Postscript or PNG images) by choosing
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Add Binary...</guimenuitem></menuchoice>.
|
||
|
The <guilabel>CVS Add</guilabel> dialog will appear, listing the binary files
|
||
|
you marked, and asks for confirmation. Press <guibutton>OK</guibutton>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
&cervisia; issues a command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs add -kb <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="removingfiles">
|
||
|
<title>Removing Files</title>
|
||
|
|
||
|
<para>
|
||
|
Like adding files, removing files is done in two steps: First, the files have
|
||
|
to be registered as removed by choosing
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Remove From
|
||
|
Repository...</guimenuitem></menuchoice> or right clicking the marked files and
|
||
|
choosing <guimenuitem>Remove From Repository...</guimenuitem> from the context
|
||
|
menu. The <guilabel>CVS Remove</guilabel> dialog will appear, listing the files
|
||
|
you marked, and asking for confirmation. Press <guibutton>OK</guibutton>.
|
||
|
&cervisia; issues the command
|
||
|
</para>
|
||
|
<para>
|
||
|
<screen><command>cvs remove -f <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
After that, this modification to the sandbox has to be committed, possibly
|
||
|
together with other modifications to the project.
|
||
|
</para>
|
||
|
|
||
|
<note><para>
|
||
|
The above command only works if the file is up-to-date. Otherwise, you get an
|
||
|
error message. This behavior is sensible: If you have modified the file
|
||
|
compared to the version in the repository, or if someone else has made any
|
||
|
modifications, you will first want to check if you really want to discard
|
||
|
them.
|
||
|
</para></note>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="addingremovingdirs">
|
||
|
<title>Adding and Removing Folders</title>
|
||
|
|
||
|
<para>
|
||
|
Folders are handled fundamentally different from ordinary files by
|
||
|
&CVS;. They are not under revision control, i.e. you cannot tell which
|
||
|
folders existed in the project at a certain time. Furthermore, folders
|
||
|
can never be explicitly removed (except by removing them directly in the
|
||
|
repository).
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
As a substitute, &CVS; follows the convention that a folder is "non-existent"
|
||
|
in a version of the project if it is empty. This convention can be
|
||
|
enforced by using the option <option>-P</option> to <command>cvs
|
||
|
update</command> and <command>cvs checkout</command>. This option can be set
|
||
|
in the menu <menuchoice><guimenu>Settings</guimenu><guimenuitem>Prune Empty
|
||
|
Folders on Update</guimenuitem></menuchoice>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
A folder can be added to the repository choosing
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Add to
|
||
|
Repository...</guimenuitem></menuchoice> or right clicking the marked folder and
|
||
|
choosing <guimenuitem>Add to Repository...</guimenuitem> from the context menu.
|
||
|
Note that in contrast to adding files, adding folders does not require a commit
|
||
|
afterwards. &cervisia; issues the command
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs add <replaceable>dirname</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="committingfiles">
|
||
|
<title>Committing Files</title>
|
||
|
|
||
|
<para>
|
||
|
When you have made a certain number of changes to your working copy, and you
|
||
|
want other developers to have access to them, you <emphasis>commit</emphasis>
|
||
|
them. With a commit, you place your versions of the modified files as new
|
||
|
revisions into the repository. A subsequent update by another developer will
|
||
|
bring your modifications into their working copy.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In order to commit a couple of files, select them in &cervisia;'s main view and
|
||
|
choose
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Commit...</guimenuitem></menuchoice>
|
||
|
or right click the marked files and choose
|
||
|
<guimenuitem>Commit...</guimenuitem> from the context menu.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-commit" float="1">
|
||
|
<title>A screenshot of &cervisia;'s commit dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="commit.png"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
You get a dialog that shows you a list of the selected files on the top section
|
||
|
and a log message for your changes below. &cervisia; helps you in several ways
|
||
|
to find a meaningful log message: first, in the file list you can double-click
|
||
|
a file or press <keycap>Return</keycap> in order to see the changes you have
|
||
|
made to the file. Second, it gives you a list of log messages you have
|
||
|
previously used in a combo box. Third, this dialog is integrated with
|
||
|
&cervisia;'s changelog editor described below. When you have finished the
|
||
|
dialog, the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs commit -m <replaceable>message</replaceable> <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
is used.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<note><para>
|
||
|
A common error you may encounter when committing is <errorname>Up-to-date check
|
||
|
failed</errorname>. This indicates that someone has committed changes to the
|
||
|
repository since you last updated; or, more technically, that your
|
||
|
<literal>BASE</literal> revision is not the newest on its branch. In such a
|
||
|
case, &CVS; refuses to merge your modifications into the repository. The
|
||
|
solution is to update, resolve any conflicts and commit again. Of course, if
|
||
|
you are working on a software project, it is normally good style to check if
|
||
|
the program still works after you have updated - after all, there could be bad
|
||
|
interactions between your modifications and the other modifications which
|
||
|
break the code.
|
||
|
</para></note>
|
||
|
|
||
|
<note>
|
||
|
<para>
|
||
|
Another popular mistake results in the error message <errorname>Sticky tag 'X'
|
||
|
for file 'X' is not a branch</errorname>. This happens if you try to commit a
|
||
|
file which you have previously brought to a certain revision or tag with the command
|
||
|
</para>
|
||
|
<para>
|
||
|
<screen><prompt>%</prompt><userinput>cvs update -r X</userinput></screen>
|
||
|
</para>
|
||
|
<para>
|
||
|
(which is ⪚ used by the menu item
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Update to
|
||
|
Tag/Date...</guimenuitem></menuchoice>). In such a case, the tag on the file
|
||
|
gets sticky, i.e. further updates do not bring you to the newest revision on
|
||
|
the branch. If you want to commit further revisions to the branch, you have to
|
||
|
update to the branch tag before you do further commits.
|
||
|
</para>
|
||
|
</note>
|
||
|
|
||
|
<para>
|
||
|
With &cervisia;, it is quite easy to maintain a ChangeLog file that is
|
||
|
compliant with the format laid out in the GNU coding guidelines. To use it,
|
||
|
choose <menuchoice><guimenu>File</guimenu><guimenuitem>Insert ChangeLog
|
||
|
Entry...</guimenuitem></menuchoice>. If a file with the name
|
||
|
<filename>ChangeLog</filename> exists in the toplevel folder of your
|
||
|
sandbox, this file will be loaded and you have the possibility to edit it. To
|
||
|
this end, at the top of the file, an entry with the current date and your user
|
||
|
name (which can be configured as described in <xref
|
||
|
linkend="customize-general"/>) is inserted. When you finish the dialog this
|
||
|
dialog by clicking <guibutton>OK</guibutton>, the next commit dialog you open
|
||
|
will have the log message set to the message you last entered in the ChangeLog.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="resolvingconflicts">
|
||
|
<title>Resolving Conflicts</title>
|
||
|
|
||
|
<para>
|
||
|
Conflicts may occur whenever you have made changes to a file which was also
|
||
|
modified by another developer. The conflict is detected by &CVS; when you
|
||
|
update the modified file; &CVS; then tries to merge the modifications committed
|
||
|
by the other developer into your working copy. The merge fails if both your
|
||
|
and his modifications are in overlapping parts of the file, and the &CVS;
|
||
|
server issues an error message.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In &cervisia;'s main view, files with conflicts are indicated with "Conflict"
|
||
|
in the status column and with a red color. It is your job now to resolve these
|
||
|
conflicts before you commit the file. &CVS; will refuse to commit any files with
|
||
|
conflicts until they have been edited. From the main view, you can of
|
||
|
course resolve conflicts the traditional way: just double-click the file in
|
||
|
question and edit it with your favorite editor.</para>
|
||
|
|
||
|
<para>
|
||
|
&CVS; marks the conflicting changes by placing marks in the middle
|
||
|
of the files, in the following manner:</para>
|
||
|
|
||
|
<screen>
|
||
|
<<<<<<<
|
||
|
Changes in your working copy
|
||
|
=======
|
||
|
Changes in the repository
|
||
|
>>>>>>> revision_number
|
||
|
</screen>
|
||
|
|
||
|
<para>You should replace this whole block with the new merged version. Of
|
||
|
course, you have a great amount of freedom when resolving a
|
||
|
set of conflicts: for each conflict you can decide to take one of the two
|
||
|
alternative versions. You can also decide that both approaches are broken
|
||
|
and rewrite a whole routine or the complete file from scratch.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Fortunately, &cervisia; offers a nicer interface for handling these conflicts.
|
||
|
This does not mean that you will never need to manually edit the files, but
|
||
|
at least can eliminate the need to do so for the trivial conflict resolution.
|
||
|
To use &cervisia;'s <guilabel>CVS Resolve</guilabel> dialog choose
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Resolve...</guimenuitem></menuchoice>
|
||
|
or right click the marked file and choose
|
||
|
<guimenuitem>Resolve...</guimenuitem> from the context menu.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-resolve" float="1">
|
||
|
<title>A screenshot of &cervisia;'s resolve dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="resolve.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s resolve dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
On the top of the dialog, you see <guilabel>Your version (A)</guilabel> of the
|
||
|
file on the left hand side and the version in the repository, <guilabel>Other
|
||
|
version (B)</guilabel>, on the right hand side. The differences
|
||
|
between them are marked in red color. Below these two versions, you can see
|
||
|
the <guilabel>Merged version</guilabel>. The merged version reflects what that
|
||
|
section will be in your working copy if you press the <guibutton>Save</guibutton>
|
||
|
button.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You can go back and forward between the conflicting sections by pressing
|
||
|
<guibutton><<</guibutton> and <guibutton>>></guibutton>. In the
|
||
|
lower middle of the dialog you can see which section is currently marked. For
|
||
|
example, <literal>2 of 3</literal> means that you are currently at the second
|
||
|
differing section of 3 total.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Now can can decide section by section which version you want to have in the
|
||
|
merged file. By pressing <guibutton>A</guibutton>, you take over the version you
|
||
|
edited. By pressing <guibutton>B</guibutton>, you take over the version from the
|
||
|
repository. By pressing <guibutton>A+B</guibutton>, both versions will be added,
|
||
|
and your version will come first. <guibutton>B+A</guibutton> yields the same
|
||
|
result, but the order will be different: first the repository version, then
|
||
|
yours.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you are not happy with any of these versions, press
|
||
|
<guibutton>Edit</guibutton> to open a simple text editor where you can
|
||
|
edit the section. When you are finished editing, press <guibutton>OK</guibutton>
|
||
|
to return to the <guilabel>CVS Resolve</guilabel> dialog and resume solving
|
||
|
conflicts. You will see the section you just edited in the
|
||
|
<guilabel>Merged version</guilabel>, with your modifications.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To save your modifications, overwriting the working copy version, press
|
||
|
<guibutton>Save</guibutton>. Note that this will save the choices not only the
|
||
|
section you are currently viewing, but all sections in the file. If you want to
|
||
|
save it to another file, press <guibutton>Save As...</guibutton>.
|
||
|
Press <guibutton>Close</guibutton> to exit the dialog. If you close the dialog
|
||
|
without saving, the changes you made will be lost.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="obtaininginformation">
|
||
|
<title>Obtaining Information About Files and Creating Patches</title>
|
||
|
|
||
|
<sect1 id="diff">
|
||
|
<title>Watching Differences Between Revisions</title>
|
||
|
|
||
|
<para>
|
||
|
There are several places in &cervisia; where you can ask for a window showing
|
||
|
the differences between revisions of a file:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
In the main view, you can choose
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>Difference to
|
||
|
Repository (BASE)...</guimenuitem></menuchoice>. This is based on the command
|
||
|
<command>cvs diff</command> and shows you the differences between the version
|
||
|
in your sandbox and the version to which you last updated (also known as
|
||
|
<literal>BASE</literal>). This is in particular useful just before you commit
|
||
|
a file, so you can find an appropriate log message.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
You can view the differences between the version in your sandbox and the version
|
||
|
in the main development branch (also called <literal>HEAD</literal>) by choosing
|
||
|
<menuchoice><guimenu>View</guimenu>
|
||
|
<guimenuitem>Difference to Repository (HEAD)...</guimenuitem></menuchoice>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
You can view the differences between the last two revisions of the selected file
|
||
|
choosing <menuchoice><guimenu>View</guimenu>
|
||
|
<guimenuitem>Last Change...</guimenuitem></menuchoice>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
You can access the <guimenuitem>Difference to Repository (BASE)...</guimenuitem>,
|
||
|
<guimenuitem>Difference to Repository (HEAD)...</guimenuitem> and
|
||
|
<guimenuitem>Last Change...</guimenuitem> menu items from the main view context
|
||
|
menu, by right-clicking the file you want to view.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
In the dialog that is shown when a you commit a set of files, you can request
|
||
|
a difference window by selecting a file name in the selection list, either by
|
||
|
double-clicking it or by pressing <keycap>Return</keycap>. This is quite
|
||
|
similar to using <menuchoice><guimenu>View</guimenu><guimenuitem>Difference
|
||
|
to Repository (BASE)...</guimenuitem></menuchoice> with the respective file in the
|
||
|
main view.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
In the Browse Logs dialog, you can mark two revisions of a file and request a
|
||
|
dialog showing the differences between them (see <xref linkend="browsinglogs"/>).
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>
|
||
|
As you may have expected, &cervisia; does not just dump the output of the
|
||
|
<command>diff</command> command into your terminal, but shows you a graphical
|
||
|
view as seen in <xref linkend="screenshot-log"/>.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-log" float="1">
|
||
|
<title>A screenshot of &cervisia;'s diff dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="diff.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s diff dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
The text in the dialog is an improved variant of the text given by the diff
|
||
|
command with the <option>-u</option> option. You can see the differing
|
||
|
versions in two windows, with lines arranged such that you can do a
|
||
|
side-by-side comparison. That means, where text has been added or deleted,
|
||
|
the respective window shows empty lines with the marker
|
||
|
<literal>+++++</literal> at the left hand side. Elsewhere, you can see the
|
||
|
running number of each line in the left column.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In the second column in the right window, you can see which kind of change has
|
||
|
been made. Possible types are <literal>Add</literal>,
|
||
|
<literal>Delete</literal> and <literal>Change</literal>. The respective lines
|
||
|
are marked in blue, green and red color. In the middle of the dialog a
|
||
|
compressed image of the color markers is shown. In this way, you can get a
|
||
|
quick overview of the overall changes to the file. You can also use the
|
||
|
position of the colored regions in the compressed image as an orientation when
|
||
|
you using the scroll bars.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Normally, the scrollbars at the left and the right window are synchronized,
|
||
|
i.e. if you scroll on the left hand side, the right hand side is scrolled by
|
||
|
the same amount. You can change this by checking the box
|
||
|
<guibutton>Synchronize scroll bars</guibutton>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For information about how to customize the diff dialog, see <xref linkend="customize-diff"/>.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="creatingpatches">
|
||
|
<title>Creating Patches</title>
|
||
|
|
||
|
<para>
|
||
|
Sometimes you want to offer your modifications for review, before committing them,
|
||
|
or you do not have write access to the repository (therefore you cannot
|
||
|
commit). &CVS; offers standard formats to share the modifications in
|
||
|
your working copy, so other people can review your changes, test them in their
|
||
|
working copy and apply them to the &CVS; repository. A file containing these
|
||
|
differences is called a <firstterm>patch</firstterm>, and is generated by the
|
||
|
<command>cvs diff</command> command, in the same way as the differences in
|
||
|
<xref linkend="diff"/>. Sharing patches instead of sets of files requires less
|
||
|
bandwidth, and patches are easier to handle, as you can send only one patch
|
||
|
file containing all the differences from many source files.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
&cervisia; gives you access to this feature by choosing
|
||
|
<menuchoice><guimenu>Advanced</guimenu>
|
||
|
<guimenuitem>Create Patch Against Repository...</guimenuitem></menuchoice>.
|
||
|
</para>
|
||
|
|
||
|
<important><para>
|
||
|
The <guimenuitem>Create Patch Against Repository...</guimenuitem> action
|
||
|
creates a patch with all modifications in all files in your working copy
|
||
|
(sandbox) against the <literal>BASE</literal> repository. Therefore, the
|
||
|
selection of files in the main view does not affect the patch that will be
|
||
|
generated.
|
||
|
</para></important>
|
||
|
|
||
|
<para>
|
||
|
Another possibility is to select one file in the main view and choose
|
||
|
<guimenuitem>Browse Log...</guimenuitem> from the <guimenu>View</guimenu> menu
|
||
|
or right click the marked file and choose
|
||
|
<guimenuitem>Browse Log...</guimenuitem> from the context menu, in order to open
|
||
|
the <link linkend="browsinglogs">Browse log dialog</link>. Now, select the
|
||
|
version you want to create a patch against, as revision "A" and press
|
||
|
the button <guilabel>Create Patch...</guilabel>. This will generate a patch with
|
||
|
the differences between the <emphasis>marked file</emphasis> in your working
|
||
|
copy and the version selected as revision "A".
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Before generating the patch, &cervisia; displays a dialog allowing you to
|
||
|
configure the output format.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-patch" float="1">
|
||
|
<title>A screenshot of &cervisia;'s patch dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="patch.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s patch dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Output Format</guilabel></term>
|
||
|
<listitem><para>
|
||
|
There are three output formats available:
|
||
|
</para>
|
||
|
<para>
|
||
|
<guilabel>Normal</guilabel>: a format that can be used to cause the ed editor
|
||
|
to automatically make another copy of the old file match the new file. In
|
||
|
the normal output format, the characters < and > mark the changes, and
|
||
|
there is no context information.
|
||
|
</para>
|
||
|
<para>
|
||
|
<guilabel>Unified</guilabel>: the most used format for
|
||
|
exchanging patches. The unified format uses context lines in addition to line
|
||
|
numbers to record the differences. This makes the process of
|
||
|
applying patches more robust. This format displays the
|
||
|
differences in a compact and readable form, with a header for each file
|
||
|
involved, and separate sections (chunks) for each difference. The context lines
|
||
|
available for each difference make reading the modifications easier. In
|
||
|
the unified output format, the characters + and - mark the changes.
|
||
|
</para>
|
||
|
<para>
|
||
|
<guilabel>Context</guilabel>, which presents the same information as the unified
|
||
|
format, but in a less compact way. In the context output format, the character !
|
||
|
marks the changes.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Number of context lines:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Set here the number of context lines for the unified or context output formats.
|
||
|
This option is not available for the normal output format, as in this format
|
||
|
no context information is recorded. More context information makes reading the
|
||
|
raw output easier, and applying the patch more precise, but increases the patch
|
||
|
size. It is recommended to use at least two context lines for proper patch
|
||
|
operation.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Ignore Options</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Check here the changes that should not be considered as differences when
|
||
|
generating the patch.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
After setting the output format, &cervisia; generates the patch and displays the
|
||
|
<guilabel>Save As</guilabel> dialog. Enter in this dialog the file name
|
||
|
and location of the patch file.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="annotate">
|
||
|
<title>Watching an Annotated View of a File</title>
|
||
|
|
||
|
<para>
|
||
|
With the command <command>cvs annotate</command>, &CVS; offers the possibility
|
||
|
to see - for each line in a file - who has modified a line the most recently.
|
||
|
This view may be helpful in order to find out who has introduced a change in
|
||
|
the behavior of a program or who should be asked about some change or bug in
|
||
|
the code.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
&cervisia; gives you access to this feature, but it further enriches the
|
||
|
information in an interactive way. You obtain an annotate view by choosing
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>Annotate...</guimenuitem></menuchoice>.
|
||
|
Another possibility is to press the button <guilabel>Annotate</guilabel> in
|
||
|
the <link linkend="browsinglogs">Browse log dialog</link>, in which you can
|
||
|
select which version of the file you want to display.
|
||
|
In <xref linkend="screenshot-annotate"/> you can see a screenshot of the
|
||
|
dialog.
|
||
|
</para>
|
||
|
|
||
|
<figure id="screenshot-annotate" float="1">
|
||
|
<title>A screenshot of &cervisia;'s annotate dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="annotate.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s annotate dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
In the annotate dialog, you see in a window the latest version of the selected
|
||
|
file (or the revision "A" version, in case you launched the annotate
|
||
|
dialog from the the <link linkend="browsinglogs">Browse log dialog</link>). In
|
||
|
the columns before the text, you get some information related to the
|
||
|
latest change in each line. In the first column the line number is
|
||
|
displayed. In the second column you see the name of the author and
|
||
|
revision number. Finally, in the third column you see the actual content of that
|
||
|
line.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Consequently, when a certain line appears strange to you or you assume a bug
|
||
|
there, you can immediately see who is responsible for that line. But not only
|
||
|
that, you can also find out <emphasis>why</emphasis> that line was
|
||
|
changed. To this end, move the mouse cursor over the respective revision
|
||
|
number. Then a tooltip appears that shows the log message and the date of the
|
||
|
change.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="browsinglogs">
|
||
|
<title>Browsing &CVS; Logs</title>
|
||
|
|
||
|
<para>
|
||
|
When you mark one file in the main view and choose <guimenuitem>Browse
|
||
|
Log...</guimenuitem> from the <guimenu>View</guimenu> menu
|
||
|
or right click the marked file and choose
|
||
|
<guimenuitem>Browse Log...</guimenuitem> from the context menu, the
|
||
|
<guilabel>CVS Log</guilabel> dialog is shown (if you mark more than one, nothing
|
||
|
happens, as &cervisia; can only generate and parse the log for one file at a
|
||
|
time). This dialog offers functionality that is beyond viewing the file's
|
||
|
history. Using it as a version browser you can:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
View the revision, author, date, branch, commit message, and tags for each
|
||
|
version of the marked file.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
View a graphical tree representation showing the branching and tagging of the
|
||
|
marked file.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
View any version of the marked file (with the default application).
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Watch an annotated view of any version of the marked file
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
View the differences between any pair of versions of the marked file,
|
||
|
including pairs with the current working copy version of the marked file.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Create patches containing the differences between any pair of versions of the marked
|
||
|
file, including pairs with the current working copy version of the marked file.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<figure float="1">
|
||
|
<title>A screenshot of &cervisia;'s browse logs dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="logtree.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s browse logs dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
You can choose to see the history as provided by the <command>cvs
|
||
|
log</command> command (<guilabel>CVS Output</guilabel>), as a
|
||
|
<guilabel>Tree</guilabel>, or in <guilabel>List</guilabel> form. What you prefer
|
||
|
is of course a matter of taste and it depends on what information you are
|
||
|
interested in. The tree is an intuitive representation of what has been done
|
||
|
on different branches by which authors. As tooltips, you can see the corresponding
|
||
|
log messages. The list is by its nature linear and, therefore, does not give an
|
||
|
immediate view of branches; on the other hand, it concentrates more otherwise
|
||
|
relevant information on less screen estate, namely the time of each change of
|
||
|
the file and the first part of the log message. The CVS output information is
|
||
|
complete, but long, and difficult to read. To alleviate these problems, you
|
||
|
have the ability to search the text of the CVS output, by pressing the
|
||
|
<guibutton>Find...</guibutton> button.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To obtain more information about a certain revision, you can click on it
|
||
|
either in the list or the tree view. The fields in the middle of the dialog
|
||
|
are then filled with the complete information provided by <command>cvs
|
||
|
log</command>. You can mark two revisions, called "A" and "B", which are
|
||
|
relevant if you make use of further features provided by the buttons.
|
||
|
Revision "A" can be chosen with the left mouse button, revision "B"
|
||
|
with the middle one. In the list view, you can also
|
||
|
navigate with with your cursor keys. In order to mark revisions "A" and "B",
|
||
|
use the keybindings <keycombo><keycap>Ctrl</keycap><keycap>A</keycap></keycombo>,
|
||
|
<keycombo><keycap>Ctrl</keycap><keycap>B</keycap></keycombo>, respectively.
|
||
|
Using the <guilabel>CVS Output</guilabel> view, you can click on the
|
||
|
<guilabel>Select for revision A</guilabel> and <guilabel>Select for
|
||
|
revision B</guilabel> to mark the revisions.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you press the <guibutton>Annotate</guibutton> button, you get a dialog
|
||
|
showing the text of file belonging to the revision marked as "A".
|
||
|
Every line is prefixed with the information about who edited this last time,
|
||
|
and at which revision this happened. You can get more information about viewing
|
||
|
annotated versions in <xref linkend="annotate" />.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you press the <guibutton>Diff</guibutton> button, a <command>cvs diff</command>
|
||
|
call is issued and you get a dialog in which all the modifications between the
|
||
|
two marked revisions are shown. If you mark revision "A", but not
|
||
|
revision "B", &cervisia; will generate the modifications between
|
||
|
the file version marked as revision "A" and the working copy version
|
||
|
of the file. This allows you to view the differences between your version of the
|
||
|
file and any version available in &CVS;. To make it easy to see the changes,
|
||
|
different colors are used to mark lines which have been added, removed or simply
|
||
|
changed. You can get more information about viewing differences in
|
||
|
<xref linkend="diff" />.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you press the <guibutton>Create Patch...</guibutton> button, you get a dialog
|
||
|
in which you can set the format options for generating a file containing all the
|
||
|
modifications between the two marked revisions which are shown. If you mark
|
||
|
revision "A", but not revision "B", &cervisia; will generate
|
||
|
the modifications between the file version marked as revision "A" and
|
||
|
the working copy version of the file. This allows you to generate a patch, or
|
||
|
difference file, between your version of the file and any version available in
|
||
|
&CVS;. After configuring the format of the patch in the dialog, and pressing
|
||
|
<guibutton>OK</guibutton>, a <command>cvs diff</command> command is issued to
|
||
|
generate the difference file. A <guilabel>Save As</guilabel> dialog will pop up.
|
||
|
Enter the file name and location of the patch file &cervisia; generated, in order
|
||
|
to save it. You can get more information about creating patches, and the patch
|
||
|
format options in <xref linkend="creatingpatches" />.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you press the <guibutton>View</guibutton> button, &cervisia; will retrieve
|
||
|
the revision marked as "A" and display it using the default
|
||
|
application for its file type.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Press the <guibutton>Close</guibutton> button to leave the dialog and return to
|
||
|
the main view.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
To generate the log that is the base for the <guilabel>CVS Log</guilabel>
|
||
|
dialog, &cervisia; issues the following command:
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs log <replaceable>file name</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="browsinghistory">
|
||
|
<title>Browsing the History</title>
|
||
|
|
||
|
<para>
|
||
|
If the used repository has logging enabled, &cervisia; can present you a
|
||
|
history of certain events like checkouts, commits, rtags, updates and
|
||
|
releases. Choose <guimenuitem>History</guimenuitem> from the
|
||
|
<guimenu>View</guimenu> menu, and &cervisia; will issue the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs history -e -a</command></screen>
|
||
|
</para>
|
||
|
|
||
|
<note><para>
|
||
|
This fetches the complete logging file from the server, i.e. a list of
|
||
|
the events for all users and all modules. This can be a huge amount of data.
|
||
|
</para></note>
|
||
|
|
||
|
<para>
|
||
|
Now you can see the list of events, sorted by date. In the second column, the
|
||
|
type of the event is shown:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
Checkout - The user who is displayed in the 'Author' column
|
||
|
has checked out a module
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Tag - A user has used the command <command>cvs rtag</command>. Note that the
|
||
|
usage of <command>cvs tag</command> (as done by &cervisia;'s
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Tag/Branch...</guimenuitem></menuchoice>
|
||
|
command) is not recorded in the history database. This has historical reasons
|
||
|
(see the &CVS; <acronym>FAQ</acronym>).
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Release - A user has released a module. Actually, this command is rarely used
|
||
|
and not of much value.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Update, Deleted - A user has made an update on a file which was deleted in the
|
||
|
repository. As a consequence, the file was deleted in his working copy.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Update, Copied - A user has made an update on a file. A new version was copied
|
||
|
into working copy.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Update, Merged - A user has made an update on a file. The modifications in the
|
||
|
repository version on the file were merged into his working copy.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Update, Conflict - A user has made an update on a file, and a conflict with
|
||
|
his own modifications was detected.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Commit, Modified - A user committed a modified file.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Commit, Added - A user added a file and committed it.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Commit, Removed - A user removed a file and committed it.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<figure id="screenshot-history" float="1">
|
||
|
<title>A screenshot of &cervisia;'s history dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="history.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s history dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<para>
|
||
|
You can sort the list by other criteria simply by clicking on the respective
|
||
|
column header. In order to sort out the history entries you are interested in,
|
||
|
there are various filter options activated by check boxes:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem><para>Show commit events - shows commits</para></listitem>
|
||
|
<listitem><para>Show checkout events - shows checkouts</para></listitem>
|
||
|
<listitem><para>Show tag events - shows taggings</para></listitem>
|
||
|
<listitem><para>Show other events - shows events not included in the above</para></listitem>
|
||
|
<listitem><para>Only user - shows only events caused by a certain user</para></listitem>
|
||
|
<listitem><para>Only file names matching - filters file names by a regular expression</para></listitem>
|
||
|
<listitem><para>Only dirnames matching - filters folder names by a regular expression</para></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>
|
||
|
Special characters recognized by the regular expression matcher are:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>x*</literal> matches any number of occurrences of the character
|
||
|
<literal>x</literal>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>x+</literal> matches one or more of occurrences of the character
|
||
|
<literal>x</literal>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>x?</literal> matches zero or one occurrences of the character
|
||
|
<literal>x</literal>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>^</literal> matches the start of the string.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>$</literal> matches the end of the string.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
<literal>[a-cx-z]</literal> matches a set of characters,
|
||
|
⪚ here the set consisting of a,b,c,x,y,z.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="advancedusage">
|
||
|
<title>Advanced Usage</title>
|
||
|
|
||
|
<sect1 id="updatingto">
|
||
|
<title>Updating to Tag, Branch or Date</title>
|
||
|
|
||
|
<para>
|
||
|
Branches of a module are parallel versions of this module. A good real life
|
||
|
example of the use of this feature is the release of a software project. After a
|
||
|
major release, there are bugs in the code that should be fixed, but people want
|
||
|
to add new features to the application too. It is very hard to do both at the
|
||
|
same time because new features usually introduce new bugs, making it hard to
|
||
|
track down the old ones. To solve this dilemma, &CVS; lets you create a parallel
|
||
|
version, that we will call the "stable release branch", where you can
|
||
|
only add bugfixes, leaving the main branch (HEAD) open for adding new features.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Tags are used to mark a version of a project. &CVS; stamps one
|
||
|
version of each file with the tag, so when you checkout or
|
||
|
update to a specific tag, you will get always the same file versions;
|
||
|
therefore, as opposed to branches, tags are not dynamic: you cannot develop a
|
||
|
tag. Tags are useful to mark releases, big changes in the code, &etc;
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
When you are developing or following the development of a software project,
|
||
|
you do not necessarily work with the main branch all the time. After a release,
|
||
|
you may want to stay with the released branch for a while, to enjoy its relative
|
||
|
stability, fix bugs, translate the sources, &etc; To do all that, you have to
|
||
|
update to the released branch. All your files will be updated to the latest
|
||
|
version of the files in that branch. After updating, all your new commits will
|
||
|
be uploaded to the new branch as well.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Also, if you want to track a bug that was reported
|
||
|
against a past tagged release, &CVS; offers you the possibility to retrieve the
|
||
|
software as it was released, by updating to that tag. Besides, if you want to
|
||
|
fetch a past version of your project, you can update your working copy to a
|
||
|
specific date. This may be useful if an error was introduced in the project
|
||
|
between two releases, and you have an opinion on when that was. When you update
|
||
|
to a date or tag, the versions of your files will be the same as the versions
|
||
|
in that specific date or the versions stamped by that tag.
|
||
|
</para>
|
||
|
|
||
|
<warning><para>
|
||
|
Before updating to a different branch or tag, make sure you committed all your
|
||
|
changes to the branch you are working with. If your are not ready to
|
||
|
commit your changes, but do not want to discard them, do not update to the new
|
||
|
branch, as you may lose your changes. As an alternative, you can do a new
|
||
|
<link linkend="checkingout">checkout</link>, to work in parallel with
|
||
|
both versions.
|
||
|
</para></warning>
|
||
|
|
||
|
<figure id="screenshot-updatetag" float="1">
|
||
|
<title>A screenshot of &cervisia;'s update to tag dialog</title>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata format="PNG" fileref="updatetag.png"/></imageobject>
|
||
|
<textobject><phrase>A screenshot of &cervisia;'s update to tag dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</figure>
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Update to branch</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Select this option to update to a branch. Enter the name of the branch in the
|
||
|
drop down text box (or press the <guilabel>Fetch List</guilabel> button to
|
||
|
retrieve the list of branches from the &CVS; server, and select the one you want
|
||
|
in the drop down list).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Update to tag</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Select this option to update to a tag. Enter the name of the tag in the
|
||
|
drop down text box (or press the <guilabel>Fetch List</guilabel> button to
|
||
|
retrieve the list of tags from the &CVS; server, and select the one you want
|
||
|
in the drop down list).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Update to date</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Select this option to update to a date. In the field below, you can enter a wide
|
||
|
variety of date formats. One possible format is <literal>yyyy-mm-dd</literal>
|
||
|
where <literal>yyyy</literal> is the year, <literal>mm</literal> is the month
|
||
|
(numerically) and <literal>dd</literal> is the day. Alternatives are some
|
||
|
English phrases like <literal>yesterday</literal> or <literal>2 weeks
|
||
|
ago</literal>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
<note><para>
|
||
|
Updating to a tag or date make them 'sticky', &ie; you can not commit
|
||
|
further modifications on that files (unless the tag is a branch tag). In order
|
||
|
to get back to the main branch, use the menu item
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Update to
|
||
|
HEAD</guimenuitem></menuchoice>.
|
||
|
</para></note>
|
||
|
|
||
|
<para>
|
||
|
The comand issued to update to a branch or tag is:
|
||
|
<screen><command>cvs update -r <replaceable>tag</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The command issued to update to a date is:
|
||
|
<screen><command>cvs update -D <replaceable>date</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The command issued to update to the main branch (HEAD) is:
|
||
|
<screen><command>cvs update <option>-A</option></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="taggingbranching">
|
||
|
<title>Tagging and Branching</title>
|
||
|
|
||
|
<para>
|
||
|
We discuss here only the technical aspects of tagging and branching. If you
|
||
|
are only a <emphasis>user</emphasis>, not the administrator of the repository,
|
||
|
you will probably not be confronted with the problem. If however you are your
|
||
|
own administrator, you should first read about the non-technical problems that
|
||
|
accompany branching, in order to get an impression of how time-consuming and
|
||
|
error-prone maintaining different branches of a project can be. The appendix
|
||
|
includes some references about this topic.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Simple tagging is something you usually do when a release is made, so that you
|
||
|
can at any time easily get back to the project state at that time. Tags are
|
||
|
usually given a name consisting of the project name and the version
|
||
|
number. For example, &cervisia; 1.0 is available under the tag
|
||
|
<literal>CERVISIA_1_0</literal>. &cervisia; enforces &CVS;'s strict rules
|
||
|
about what constitutes valid tag name. It must begin with a letter and may
|
||
|
contain letters, digits, hyphens and underscores.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Normally, you will want to tag the whole project (although &CVS; of course
|
||
|
allows you to tag only a subset). To this end, mark the toplevel folder in
|
||
|
the view and choose
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Tag/Branch</guimenuitem></menuchoice>.
|
||
|
Now enter the name of the tag, press <keycap>Return</keycap> and you are done.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Creating a branch is not significantly more difficult: In the tag dialog,
|
||
|
check the box <guibutton>Create branch with this tag</guibutton>. You can also
|
||
|
delete an existing tag: Choose
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Delete
|
||
|
Tag</guimenuitem></menuchoice> in the main view.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Another aspect of branching is the merging of modifications from a branch to
|
||
|
the current branch. If you are going to do this, choose
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Merge...</guimenuitem></menuchoice>.
|
||
|
The dialog that appears now gives you two options:
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Either you may merge all modifications done on a branch to the current
|
||
|
branch. In that case, check the box <guibutton>Merge from branch</guibutton>
|
||
|
and fill in the branch you want to merge from. &cervisia; will then execute
|
||
|
the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs update <option>-j</option> <replaceable>branchtag</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The other possibility is that you want to merge only the modifications made
|
||
|
between two tags on a branch. This usually happens when you merge from the
|
||
|
same branch to the trunk several times. In that case, check the box
|
||
|
<guibutton>Merge modifications</guibutton> and enter (in the correct order)
|
||
|
the two relevant tags. This will result in a command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs update <option>-j</option> <replaceable>branchtag1</replaceable> <option>-j</option> <replaceable>branchtag2</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="watches">
|
||
|
<title>Using Watches</title>
|
||
|
|
||
|
<para>
|
||
|
A watch is the conventional name for &CVS;'s feature to notify users of the
|
||
|
repository whenever a file has been changed or a developer has started editing
|
||
|
a file. The usage of watches requires that the file
|
||
|
<filename><envar>$CVSROOT</envar>/CVSROOT/notify</filename> has been set up
|
||
|
properly. This is not discussed here; if you need further information on the
|
||
|
setup from the administrator's point of view, read one of the books listed in
|
||
|
the appendix.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
&cervisia;'s main support of watches are six menu items.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In order to add a watch to one or several files, use
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Add
|
||
|
Watch...</guimenuitem></menuchoice>. In the dialog you get, you can choose to
|
||
|
get notified for any of the types of events that &CVS; supports. For example,
|
||
|
if you only want to get notified when a file is committed, check the boxes
|
||
|
<guibutton>Only</guibutton> and <guibutton>Commits</guibutton>. If you want to
|
||
|
get notified about any event related to the marked files, check the box
|
||
|
<guibutton>All</guibutton>. The command line used when you accept the dialog
|
||
|
is
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs watch add -a commit <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
or with a similar option, depending on the events you chose to watch.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If you are not interested in some files anymore, you can remove your watches on
|
||
|
them. To this end, use
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Remove
|
||
|
Watch...</guimenuitem></menuchoice>. In the dialog you get here, the same
|
||
|
options are offered as in the form you filled out when adding the watch. When
|
||
|
you confirm this dialog, &cervisia; issues the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs watch remove <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
possibly with an option <option>-a</option> for the chosen events.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Finally, you can get a list of the people who are watching a couple of
|
||
|
files. Choose <menuchoice><guimenu>Advanced</guimenu><guimenuitem>Show
|
||
|
Watchers</guimenuitem></menuchoice>. Using this menu item will result in a
|
||
|
command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs watchers <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In the normal usage scenario of &CVS;, each developer works separately in his
|
||
|
checked out sandbox. When he wants to modify some file, he can just open it in
|
||
|
his editor and start working on it. Nobody else will know about this work
|
||
|
until the file gets committed.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For some developer groups, this is not the preferred model of
|
||
|
cooperation. They want to get notified about someone working on a file
|
||
|
<emphasis>as soon as</emphasis> he starts with it. This can be achieved by some
|
||
|
further &CVS; commands. Before you start editing a file, select it in
|
||
|
&cervisia;'s main window and choose
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Edit</guimenuitem></menuchoice>.
|
||
|
This will execute the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs edit <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This will send out a notification to everyone who has set an
|
||
|
<literal>edit</literal> watch on this file. It will also register you as an
|
||
|
<emphasis>editor</emphasis> of the file. You can obtain a list of all editors
|
||
|
of a certain file by using
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Show
|
||
|
Editors</guimenuitem></menuchoice>. This is equivalent to typing on the
|
||
|
command line
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs editors <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
An editing session is automatically ended when you commit the affected file.
|
||
|
At that moment, an <literal>unedit</literal> notification gets sent out to all
|
||
|
people who have registered a respective watch on the file. Of course,
|
||
|
sometimes you may not want to commit the file, but abort the editing session
|
||
|
and revert to the previous version of the file. This is done by using
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Unedit</guimenuitem></menuchoice>.
|
||
|
Note that &cervisia; will not ask you for confirmation; that means if you use
|
||
|
this menu item, all your work done since you used
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Edit</guimenuitem></menuchoice>
|
||
|
will be lost. Precisely, &cervisia; uses the command line
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>echo y | cvs unedit <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
So far, we have only the discussed the case where edits and unedits are used
|
||
|
voluntarily be the developers. In addition &CVS; supports a model which
|
||
|
<emphasis>enforces</emphasis> the usage of these commands. The responsible
|
||
|
command to switch to this model is <command>cvs watch on</command> which we
|
||
|
will not explain further because it is mostly used by the administrator of the
|
||
|
repository. However, the important point from the developer's point of view is
|
||
|
that when the project enforces edits, working copies are checked out
|
||
|
<emphasis>readonly</emphasis>. That means you cannot edit a file by default
|
||
|
(unless you use tricks like <command>chmod</command>). Only when you use
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Edit</guimenuitem></menuchoice>,
|
||
|
the file becomes writable. It is made read-only again when you commit the file
|
||
|
or use
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Unedit</guimenuitem></menuchoice>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
&cervisia;'s editor interface helps you with projects that enforce watches
|
||
|
also in a different way. If you just started an editor with a readonly file
|
||
|
by double-clicking on it or by using
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Edit</guimenuitem></menuchoice>,
|
||
|
you would not be able to save your modifications later. This has of course a
|
||
|
reason: Whenever you want to change a file, you should run <command>cvs
|
||
|
edit</command> before, so that all people watching the file get a notification
|
||
|
that you are working on it.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
In such a case, it is advisable to check the option
|
||
|
<menuchoice><guimenu>Settings</guimenu><guimenuitem>Do cvs edit Automatically
|
||
|
When Necessary</guimenuitem></menuchoice>. Now, whenever you edit a file by
|
||
|
double-clicking it, &cervisia; will run <command>cvs edit</command> before the
|
||
|
editor is actually executed. Then you can edit your file as usual. When you
|
||
|
have finished your work, commit your files, and the committed files are
|
||
|
read-only again.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="locking">
|
||
|
<title>Locking</title>
|
||
|
|
||
|
<para>
|
||
|
The development model usually followed when &CVS; is used is called
|
||
|
<emphasis>unreserved checkouts</emphasis>. Each developer has his own sandbox
|
||
|
where he can edit files as he likes. If when the watch features - like
|
||
|
<command>cvs edit</command> - are used, multiple developers can work on files
|
||
|
synchronously. Changes done by a different developer are merged into the local
|
||
|
sandbox when an update is performed.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Other revision control systems - like <acronym>RCS</acronym> and
|
||
|
<application>SourceSafe</application> use a different model. When a developer
|
||
|
wants to a edit a file, he has to <emphasis>lock</emphasis> it. Only one
|
||
|
developer at a time can a lock a file. When he has finished editing, the lock
|
||
|
is released. On the one hand, with this model, conflicts can never happen. On
|
||
|
the other hand, two developers can not work on the same file at the same time,
|
||
|
even when their changes do not affect each other. This can be a bottleneck.
|
||
|
We are not going to discuss the organizational benefits of both approaches.
|
||
|
Nevertheless we mention that although &CVS; has some support for locking, it is
|
||
|
not the preferred way of working with &CVS;. You should not use these features
|
||
|
unless you are sure that your project manager allows them.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
With &cervisia;, you lock files as follows. Select the desired files in the
|
||
|
main view. Then choose
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Lock</guimenuitem></menuchoice>.
|
||
|
This runs the command
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs admin -l <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
<para>The reverse effect is achieved by using
|
||
|
<menuchoice><guimenu>Advanced</guimenu><guimenuitem>Unlock</guimenuitem></menuchoice>.
|
||
|
This runs the command</para>
|
||
|
|
||
|
<para>
|
||
|
<screen><command>cvs admin -u <replaceable>file names</replaceable></command></screen>
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="customization">
|
||
|
<title>Customizing &cervisia;</title>
|
||
|
|
||
|
<para>
|
||
|
&cervisia; can be customized in various ways to your needs and
|
||
|
preferences. Some options which you may want to change regularly are directly
|
||
|
available in the <guimenu>Settings</guimenu> menu. Others are united in a common
|
||
|
dialog which is available via
|
||
|
<menuchoice><guimenu>Option</guimenu><guimenuitem>Settings...</guimenuitem></menuchoice>.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
<sect1 id="customize-general">
|
||
|
<title>General</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry id="customize-username">
|
||
|
<term><guilabel>User name for the ChangeLog editor:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Whenever you use the menu item
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Insert ChangeLog
|
||
|
Entry...</guimenuitem></menuchoice>, a new ChangeLog entry is generated with
|
||
|
the current date and your username. Normally, it is considered good style to
|
||
|
insert your full name and your email address into each of your ChangeLog
|
||
|
entries. &cervisia; add automatically the full name and email address
|
||
|
entered here.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-cvspath">
|
||
|
<term><guilabel>Path to cvs executable, or 'cvs':</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Here you can set the name (or path) to the <command>cvs</command> command
|
||
|
line client. By default, the &CVS; executable found in your <envar>$PATH</envar> is
|
||
|
used by &cervisia;.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="customize-diff">
|
||
|
<title>Diff Viewer</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry id="customize-context">
|
||
|
<term><guilabel>Number of context lines in the diff dialog:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
For the diff dialog, &cervisia; uses the option <option>-U</option> to
|
||
|
<command>diff</command>. This lets <command>diff</command> show only a limited
|
||
|
number of lines around each difference region (context lines). Here you can set
|
||
|
the argument to <option>-U</option>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-diffopt">
|
||
|
<term><guilabel>Additional options for cvs diff:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Here you can add additional arguments to the <command>diff</command>. A
|
||
|
popular example is <option>-b</option> which lets <command>diff</command>
|
||
|
ignore changes in the amount of whitespace.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-tabwidth">
|
||
|
<term><guilabel>Tab width in diff dialog:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
In the diff dialog, tab characters present in your file or in the output
|
||
|
of the <command>diff</command> command are expanded into a fixed number of
|
||
|
space characters. By default, each tab is replaced by eight spaces, but here
|
||
|
you can setup a different number.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-difffrontend">
|
||
|
<term><guilabel>External diff frontend:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
When you use any of the features which show the diff dialog, like
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>Difference to
|
||
|
Repository...</guimenuitem></menuchoice>, &cervisia; invokes its internal diff
|
||
|
frontend. If you prefer a different one, like
|
||
|
<application>Kompare</application>, <application>TkDiff</application>, or
|
||
|
<application>xxdiff</application>, enter its file name and path here.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="customize-status">
|
||
|
<title>Status</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry id="customize-startstatus-remote">
|
||
|
<term><guilabel>When opening a sandbox from a remote repository, start a
|
||
|
File->Status command automatically</guilabel></term>
|
||
|
<listitem><para>
|
||
|
When you check this option, the
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Status</guimenuitem></menuchoice>
|
||
|
command is started whenever you open a remote sandbox. This command may need some
|
||
|
time and also needs a connection to the server for remote repositories (making
|
||
|
it unusable for offline usage).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-startstatus-local">
|
||
|
<term><guilabel>When opening a sandbox from a local repository, start a
|
||
|
File->Status command automatically</guilabel></term>
|
||
|
<listitem><para>
|
||
|
When you check this option, the
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Status</guimenuitem></menuchoice>
|
||
|
command is started whenever you open a local sandbox.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="customize-advanced">
|
||
|
<title>Advanced</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry id="customize-timeout">
|
||
|
<term><guilabel>Timeout after which a progress dialog appears (in ms):</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Practically all &CVS; commands started in a sandbox which belongs to a remote
|
||
|
repository need a connection to the &CVS; server. This is affected by delays
|
||
|
from the network connection or a high load on the server. For this reason, for
|
||
|
commands like <menuchoice><guimenu>View</guimenu><guimenuitem>Difference to
|
||
|
Repository...</guimenuitem></menuchoice> &cervisia; opens a dialog which
|
||
|
indicates that the command is still running and which allows you to abort
|
||
|
it. Furthermore, this dialog is used to show you error messages from &CVS;. As
|
||
|
this dialog may become annoying after some time, it is shown only after a
|
||
|
certain timeout which is 4 seconds by default. Here you can change this value.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-compression">
|
||
|
<term><guilabel>Default compression level:</guilabel></term>
|
||
|
<listitem><para>
|
||
|
The <command>cvs</command> client compresses files and patches when they are
|
||
|
transferred over a network. With the command line option <option>-z</option>,
|
||
|
the compression level can be set. You can setup &cervisia; to use this option
|
||
|
by configuring the level here. The value set here is used only as a default;
|
||
|
additionally there is a per-repository setting available in
|
||
|
<menuchoice><guimenu>Repository</guimenu><guimenuitem>Repositories...</guimenuitem></menuchoice>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-sshagent">
|
||
|
<term><guilabel>Utilize a running or start a new ssh-agent process</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Check this box if you use <link linkend="rsh">ext (rsh) repositories</link>,
|
||
|
the &ssh; remote shell to communicate with the repository and
|
||
|
<application>ssh-agent</application> to manage your keys.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="customize-look">
|
||
|
<title>Look'n'feel</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry id="customize-protocolfont">
|
||
|
<term><guilabel>Font for protocol window...</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Press this button to open the <guilabel>Set Font</guilabel> dialog, to set the
|
||
|
font used in the protocol window (this is the window showing the
|
||
|
output of the <command>cvs</command> client).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-annotatefont">
|
||
|
<term><guilabel>Font for annotate view...</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Press this button to open the <guilabel>Set Font</guilabel> dialog, to set the
|
||
|
font used in the <link linkend="annotate">annotate view</link>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-difffont">
|
||
|
<term><guilabel>Font for diff view...</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Press this button to open the <guilabel>Set Font</guilabel> dialog, to set the
|
||
|
font used in <link linkend="diff">diff dialogs</link>.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-colors">
|
||
|
<term><guilabel>Colors</guilabel></term>
|
||
|
<listitem><para>
|
||
|
Press the colored buttons to open the <guilabel>Select Color</guilabel> dialog,
|
||
|
to set the color used for <guilabel>Conflict</guilabel>, <guilabel>Local
|
||
|
Change</guilabel>, or <guilabel>Remote Change</guilabel>, in the main view or
|
||
|
<guilabel>Diff change</guilabel>, <guilabel>Diff insertion</guilabel>, or
|
||
|
<guilabel>Diff deletion</guilabel>, in &cervisia;'s built-in diff frontend.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry id="customize-splitter">
|
||
|
<term><guilabel>Split main window horizontally</guilabel></term>
|
||
|
<listitem><para>
|
||
|
&cervisia;'s main window is normally split vertically into a window with
|
||
|
the file tree above and one with the &CVS; output below; alternatively, you can
|
||
|
arrange them horizontally.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="appendix">
|
||
|
<title>Appendix</title>
|
||
|
|
||
|
<sect1 id="ignoredfiles">
|
||
|
<title>Ignored Files</title>
|
||
|
|
||
|
<para>
|
||
|
In its main file tree, &cervisia; does not display all files which are
|
||
|
actually there. This is analog to <command>cvs</command> itself and helps to
|
||
|
avoid clutter caused by uninteresting stuff like object files. &cervisia;
|
||
|
tries to mimic <command>cvs</command>'s behavior as close as possible,
|
||
|
i.e. it gets ignore lists from the following sources:
|
||
|
</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
A static list of entries which includes things like <literal
|
||
|
role="extension">*.o</literal> and <filename>core</filename>. For details,
|
||
|
see the &CVS; documentation.
|
||
|
</para></listitem>
|
||
|
<listitem><para>
|
||
|
The file <filename><envar>$HOME</envar>/.cvsignore</filename>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
The environment variable <envar>$CVSIGNORE</envar>.
|
||
|
</para></listitem>
|
||
|
<listitem><para>
|
||
|
The <filename>.cvsignore</filename> file in the respective folder.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>
|
||
|
<command>cvs</command> itself additionally looks up entries in
|
||
|
<filename><envar>$CVSROOT</envar>/CVSROOT/cvsignore</filename>, but this is a
|
||
|
file on the server, and &cervisia; should be able to start up offline. If you
|
||
|
are working with a group that prefers to use an ignore list on the server,
|
||
|
it's probably a good idea to take a look which patterns are listed there and
|
||
|
to put them into the <filename>.cvsignore</filename> file in your home
|
||
|
folder.
|
||
|
</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="information">
|
||
|
<title>Further Information and Support</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem><para>
|
||
|
&CVS; comes with a complete set of documentation in the form of info pages,
|
||
|
known as "The Cederqvist". If it is properly installed, you get browse it by
|
||
|
typing in <userinput>info:/cvs</userinput> into the locationbar of
|
||
|
<application>kdehelp</application>, <application>khelpcenter</application>
|
||
|
resp. Alternative, you can just choose
|
||
|
<menuchoice><guimenu>Help</guimenu><guimenuitem>CVS
|
||
|
Info</guimenuitem></menuchoice> in &cervisia;. An on-line HTML version of the
|
||
|
Cederqvist is available <ulink
|
||
|
url="http://cvshome.org/docs/manual/cvs.html">on the web</ulink>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
As this book is maintained together with &CVS;, it is normally the most
|
||
|
up-to-date reference; nevertheless, considering other documentation
|
||
|
for learning to use &CVS; is recommended, in particular the following.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Karl Fogel has written the excellent book <ulink
|
||
|
url="http://cvsbook.red-bean.com/index.html">Open Source Development with
|
||
|
CVS</ulink>. About half of this book is about the development process of Open
|
||
|
Source software. The other half is a technical documentation of
|
||
|
&CVS;. Thankfully, the technical part of the book has been made freely
|
||
|
redistributable under the GPL, so that you can download a HTML version of
|
||
|
it. A list of errata is available on the webpage mentioned above.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
&CVS; issues are discussed on a dedicated <ulink
|
||
|
url="http://mail.gnu.org/mailman/listinfo/info-cvs">mailing list</ulink>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
There is USENET group <literal>comp.software.config-mgmt</literal> dedicated
|
||
|
to configuration management in general. &CVS; is only marginally a topic in
|
||
|
this group, but nevertheless it may be interesting for discussing merits of
|
||
|
various revision control systems compared to &CVS;.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>
|
||
|
Last but not least, there is a (low traffic) <ulink
|
||
|
url="http://lists.sourceforge.net/mailman/listinfo/cervisia-user">&cervisia;
|
||
|
mailing list</ulink>.
|
||
|
</para></listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="commandreference">
|
||
|
<title>Command Reference</title>
|
||
|
|
||
|
<!-- File Menu -->
|
||
|
<sect2 id="menufile">
|
||
|
|
||
|
<title>The File Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu><guimenuitem>Open Sandbox...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a sandbox in the main window. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu><guimenuitem>Recent sandboxes</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens one of the sandboxes that were in use recently.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu><guimenuitem>Insert ChangeLog Entry...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens the ChangeLog editor, prepared such that you can add a new entry with
|
||
|
the current date. See <xref linkend="committingfiles" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>U</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Update</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Runs 'cvs update' on selected files and changes the status and revision
|
||
|
numbers in the listing accordingly. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>F5</keycap></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Status</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Runs 'cvs -n update' on selected files and changes the status and revision
|
||
|
numbers in the listing accordingly. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu><guimenuitem>Edit</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens the selected file in KDE's default editor for the selected file's type.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu><guimenuitem>Resolve...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog for the selected file which allows
|
||
|
you to resolve merge conflicts in it. See <xref linkend="resolvingconflicts" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>#</keycap></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Commit...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Allows you to commit the selected files. See <xref linkend="committingfiles" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>+</keycap></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Add to Repository...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Allows you to add the selected files to the repository. See <xref linkend="addingfiles" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><guimenu>File</guimenu><guimenuitem>Add Binary...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Allows you to add the selected files to the repository as binaries
|
||
|
(<command>cvs add<option>-kb</option></command>). See <xref linkend="addingfiles" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>-</keycap></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Remove from Repository...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Allows you to remove the selected files from the repository. See <xref linkend="removingfiles" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<!--TODO: add the revert action to the working with files chapter -->
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><guimenu>File</guimenu><guimenuitem>Revert</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Discards any local changes you have made to the selected files and reverts to
|
||
|
the version in the repository (Option <option>-C</option> to <command>cvs
|
||
|
update</command>).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>Q</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu><guimenuitem>Exit</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>Quits &cervisia;.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<!-- View Menu -->
|
||
|
<sect2 id="menuview">
|
||
|
|
||
|
<title>The View Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>Escape</keycap></shortcut>
|
||
|
<guimenu>View</guimenu><guimenuitem>Stop</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Aborts any running subprocesses.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>L</keycap></keycombo></shortcut>
|
||
|
<guimenu>View</guimenu><guimenuitem>Browse Log...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows the log browser of the selected file versions. See <xref linkend="browsinglogs" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>A</keycap></keycombo></shortcut>
|
||
|
<guimenu>View</guimenu><guimenuitem>Annotate...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows an annotated view of the selected file, i.e. a view where you
|
||
|
can for each line see which author modified it last. See <xref linkend="annotate" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>D</keycap></keycombo></shortcut>
|
||
|
<guimenu>View</guimenu><guimenuitem>Difference to Repository (BASE)...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows the differences between the selected file in the sandbox
|
||
|
and the revision you last updated (BASE). See <xref linkend="diff" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>H</keycap></keycombo></shortcut>
|
||
|
<guimenu>View</guimenu><guimenuitem>Difference to Repository (HEAD)...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows the differences between the selected file in the sandbox
|
||
|
and the revision you last updated (HEAD). See <xref linkend="diff" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Last Change...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows the differences between the revision of the selected
|
||
|
file you last updated (BASE) and the revision before. See <xref linkend="diff" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>History...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Shows the &CVS; history as reported by the server. See <xref linkend="browsinghistory" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<!--TODO: add hide menus to mainscreen section-->
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Hide All Files</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether only folders are shown in the main tree view. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Hide Unmodified Files</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether unknown and up to date files are hidden in the main tree view. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Hide Removed Files</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether removed files are hidden in the main tree view. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Hide Non-CVS Files</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether files not in CVS are hidden in the main tree view. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Hide Empty Folders</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether folders without visible entries are hidden in the main tree view. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Unfold File Tree</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens all branches in the file tree so that you can
|
||
|
see all files and folders. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>View</guimenu><guimenuitem>Fold File Tree</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Closes all branches in the file tree. See <xref linkend="mainscreen" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<!-- Advanced Menu -->
|
||
|
<sect2 id="menuadvanced">
|
||
|
|
||
|
<title>The Advanced Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Tag/Branch...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Tags or branches the selected files. See <xref linkend="taggingbranching" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Delete Tag...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Removes a given tag from the selected files. See <xref linkend="taggingbranching" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Update to Tag/Date...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Brings the selected files to a given tag or date,
|
||
|
making it sticky. See <xref linkend="updatingto" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Update to HEAD...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Brings the selected files to the respective HEAD revision. See <xref linkend="updatingto" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Merge...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Merges either a given branch or the modifications
|
||
|
between two tags into the selected files. See <xref linkend="taggingbranching" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Add Watch...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Adds a watch for a set of events on the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Remove Watch...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>Removes a watch for a set of events from the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Show Watchers</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Lists the watchers of the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Edit</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Runs <command>cvs edit</command> on the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Unedit</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Runs <command>cvs unedit</command> on the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Show Editors</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Runs <command>cvs editors</command> on the selected files. See <xref linkend="watches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Lock</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Locks the selected files. See <xref linkend="locking" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Unlock</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Unlocks the selected files. See <xref linkend="locking" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Advanced</guimenu><guimenuitem>Create Patch Against Repository...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Creates a patch from the modifications in your sandbox. See <xref linkend="creatingpatches" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<!-- Repository Menu -->
|
||
|
<sect2 id="menurepository">
|
||
|
|
||
|
<title>The Repository Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Repository</guimenu><guimenuitem>Create...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>Opens a dialog which allows you to create a new local
|
||
|
repository. See <xref linkend="accessing-repository" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Repository</guimenu><guimenuitem>Checkout...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog which allows you to checkout
|
||
|
a module from a repository. See <xref linkend="checkingout" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Repository</guimenu><guimenuitem>Import...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog which allows you to import
|
||
|
a package into the repository. See <xref linkend="importing" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Repository</guimenu><guimenuitem>Repositories...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>Configures a list of repositories you often use
|
||
|
and how to access them. See <xref linkend="accessing-repository" />.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<!-- Settings Menu -->
|
||
|
<sect2 id="menuoptions">
|
||
|
<title>The Settings Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Show Toolbar</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether the toolbar is displayed.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Create Folders on Update</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether updates create folders in the sandbox which were not
|
||
|
there before (Option <option>-d</option> to <command>cvs update</command>).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Prune Empty Folders on Update</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether updates remove empty folders in the sandbox. (Option
|
||
|
<option>-P</option> to <command>cvs update</command>).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Update Recursively</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether updates are recursive (Option <option>-r</option> to
|
||
|
<command>cvs update</command>).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Commit and Remove Recursively</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>Determines whether commits and removes are recursive
|
||
|
(Option <option>-r</option> to <command>cvs add</command>,
|
||
|
<command>cvs remove</command> resp.).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Do cvs edit Automatically When Necessary</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Determines whether <command>cvs edit</command> is executed automatically
|
||
|
whenever you edit a file.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Configure Shortcuts...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog for configuring keybindings.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Configure Toolbars...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog for configuring &cervisia;'s toolbars.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu><guimenuitem>Configure Cervisia...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens a dialog for customizing &cervisia;.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<!-- Help -->
|
||
|
<sect2 id="menuhelp">
|
||
|
<title>The Help Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<shortcut><keycap>F1</keycap></shortcut>
|
||
|
<guimenu>Help</guimenu><guimenuitem>Handbook</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Invokes the KDE Help system starting at the &cervisia; help pages. (this
|
||
|
document).
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Help</guimenu><guimenuitem>Report Bug...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens the Bug report dialog.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Help</guimenu>
|
||
|
<guimenuitem>About &cervisia;</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
This will display version and author information.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Help</guimenu><guimenuitem>About KDE</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
This displays the KDE version and other basic information.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Help</guimenu><guimenuitem>CVS Manual</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para>
|
||
|
Opens the &CVS; info pages in the KDE help system.
|
||
|
</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="credits-and-licenses">
|
||
|
<title>Credits And Licenses</title>
|
||
|
|
||
|
&underFDL;
|
||
|
&underGPL;
|
||
|
|
||
|
</chapter>
|
||
|
</book>
|