mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-30 15:38:06 +01:00
1438 lines
55 KiB
Plaintext
1438 lines
55 KiB
Plaintext
\input texinfo @c -*-texinfo-*-
|
|
|
|
@comment pcl-cvs.texinfo,v 1.2 1992/04/07 20:49:23 berliner Exp
|
|
@comment Documentation for the GNU Emacs CVS mode.
|
|
@comment Copyright (C) 1992 Per Cederqvist
|
|
|
|
@comment This file is part of the pcl-cvs distribution.
|
|
|
|
@comment Pcl-cvs is free software; you can redistribute it and/or modify
|
|
@comment it under the terms of the GNU General Public License as published by
|
|
@comment the Free Software Foundation; either version 1, or (at your option)
|
|
@comment any later version.
|
|
|
|
@comment Pcl-cvs is distributed in the hope that it will be useful,
|
|
@comment but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
@comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
@comment GNU General Public License for more details.
|
|
|
|
@comment You should have received a copy of the GNU General Public License
|
|
@comment along with pcl-cvs; see the file COPYING. If not, write to
|
|
@comment the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
@setfilename pcl-cvs
|
|
@settitle Pcl-cvs - The Emacs Front-End to CVS
|
|
@setchapternewpage on
|
|
|
|
@ifinfo
|
|
Copyright @copyright{} 1992 Per Cederqvist
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
this manual provided the copyright notice and this permission notice
|
|
are preserved on all copies.
|
|
|
|
@ignore
|
|
Permission is granted to process this file through Tex and print the
|
|
results, provided the printed document carries copying permission
|
|
notice identical to this one except for the removal of this paragraph
|
|
(this paragraph not being relevant to the printed manual).
|
|
|
|
@end ignore
|
|
Permission is granted to copy and distribute modified versions of this
|
|
manual under the conditions for verbatim copying, provided also that the
|
|
section entitled ``GNU General Public License'' is included exactly as
|
|
in the original, and provided that the entire resulting derived work is
|
|
distributed under the terms of a permission notice identical to this one.
|
|
|
|
Permission is granted to copy and distribute translations of this manual
|
|
into another language, under the above conditions for modified versions,
|
|
except that the section entitled ``GNU General Public License'' and
|
|
this permission notice may be included in translations approved by the
|
|
Free Software Foundation instead of in the original English.
|
|
@end ifinfo
|
|
|
|
@synindex vr fn
|
|
@comment The titlepage section does not appear in the Info file.
|
|
@titlepage
|
|
@sp 4
|
|
@comment The title is printed in a large font.
|
|
@center @titlefont{User's Guide}
|
|
@sp
|
|
@center @titlefont{to}
|
|
@sp
|
|
@center @titlefont{pcl-cvs - the Emacs Front-End to CVS}
|
|
@sp 2
|
|
@center release 1.02
|
|
@comment -release-
|
|
@sp 3
|
|
@center Per Cederqvist
|
|
@sp 3
|
|
@center last updated 29 Mar 1992
|
|
@comment -date-
|
|
|
|
@comment The following two commands start the copyright page
|
|
@comment for the printed manual. This will not appear in the Info file.
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
Copyright @copyright{} 1992 Per Cederqvist
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
this manual provided the copyright notice and this permission notice
|
|
are preserved on all copies.
|
|
|
|
Permission is granted to copy and distribute modified versions of this
|
|
manual under the conditions for verbatim copying, provided also that the
|
|
section entitled ``GNU General Public License'' is included exactly as
|
|
in the original, and provided that the entire resulting derived work is
|
|
distributed under the terms of a permission notice identical to this one.
|
|
|
|
Permission is granted to copy and distribute translations of this manual
|
|
into another language, under the above conditions for modified versions,
|
|
except that the section entitled ``GNU General Public License'' and
|
|
this permission notice may be included in translations approved by the
|
|
Free Software Foundation instead of in the original English.
|
|
@end titlepage
|
|
|
|
@comment ================================================================
|
|
@comment The real text starts here
|
|
@comment ================================================================
|
|
|
|
@node Top, Copying, (dir), (dir)
|
|
@comment node-name, next, previous, up
|
|
|
|
|
|
@ifinfo
|
|
This info manual describes pcl-cvs which is a GNU Emacs front-end to
|
|
CVS. It works with CVS version 1.3. This manual is updated to release
|
|
1.02 of pcl-cvs.
|
|
@end ifinfo
|
|
@comment -release-
|
|
|
|
@menu
|
|
* Copying:: GNU General Public License
|
|
* Installation:: How to install pcl-cvs on your system.
|
|
* About pcl-cvs:: Authors and ftp sites.
|
|
|
|
* Getting started:: An introduction with a walk-through example.
|
|
* Buffer contents:: An explanation of the buffer contents.
|
|
* Commands:: All commands, grouped by type.
|
|
|
|
* Customization:: How you can tailor pcl-cvs to suit your needs.
|
|
* Future enhancements:: Future enhancements of pcl-cvs.
|
|
* Reporting bugs and ideas:: Where to report bugs.
|
|
|
|
* Function and Variable Index:: List of functions and variables.
|
|
* Concept Index:: List of concepts.
|
|
* Key Index:: List of keystrokes.
|
|
|
|
--- The Detailed Node Listing ---
|
|
|
|
Installation
|
|
|
|
* Pcl-cvs installation:: How to install pcl-cvs on your system.
|
|
* On-line manual installation:: How to install the on-line manual.
|
|
* Typeset manual installation:: How to create typeset documentation
|
|
about pcl-cvs.
|
|
|
|
About pcl-cvs
|
|
|
|
* Contributors:: Contributors to pcl-cvs.
|
|
* Archives:: Where can I get a copy of Pcl-Cvs?
|
|
|
|
Buffer contents
|
|
|
|
* File status:: The meaning of the second field.
|
|
* Selected files:: How selection works.
|
|
|
|
Commands
|
|
|
|
* Updating the directory:: Commands to update the local directory
|
|
* Movement commands:: How to move up and down in the buffer
|
|
* Marking files:: How to mark files that other commands
|
|
will later operate on.
|
|
* Committing changes:: Checking in your modifications to the
|
|
CVS repository.
|
|
* Editing files:: Loading files into Emacs.
|
|
* Getting info about files:: Display the log and status of files.
|
|
* Adding and removing files:: Adding and removing files
|
|
* Removing handled entries:: Uninteresting lines can easily be removed.
|
|
* Ignoring files:: Telling CVS to ignore generated files.
|
|
* Viewing differences:: Commands to @samp{diff} different versions.
|
|
@end menu
|
|
|
|
@node Copying, Installation, Top, Top
|
|
@unnumbered GNU GENERAL PUBLIC LICENSE
|
|
@center Version 2, June 1991
|
|
|
|
@display
|
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
|
675 Mass Ave, Cambridge, MA 02139, USA
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
@end display
|
|
|
|
@unnumberedsec Preamble
|
|
|
|
The licenses for most software are designed to take away your
|
|
freedom to share and change it. By contrast, the GNU General Public
|
|
License is intended to guarantee your freedom to share and change free
|
|
software---to make sure the software is free for all its users. This
|
|
General Public License applies to most of the Free Software
|
|
Foundation's software and to any other program whose authors commit to
|
|
using it. (Some other Free Software Foundation software is covered by
|
|
the GNU Library General Public License instead.) You can apply it to
|
|
your programs, too.
|
|
|
|
When we speak of free software, we are referring to freedom, not
|
|
price. Our General Public Licenses are designed to make sure that you
|
|
have the freedom to distribute copies of free software (and charge for
|
|
this service if you wish), that you receive source code or can get it
|
|
if you want it, that you can change the software or use pieces of it
|
|
in new free programs; and that you know you can do these things.
|
|
|
|
To protect your rights, we need to make restrictions that forbid
|
|
anyone to deny you these rights or to ask you to surrender the rights.
|
|
These restrictions translate to certain responsibilities for you if you
|
|
distribute copies of the software, or if you modify it.
|
|
|
|
For example, if you distribute copies of such a program, whether
|
|
gratis or for a fee, you must give the recipients all the rights that
|
|
you have. You must make sure that they, too, receive or can get the
|
|
source code. And you must show them these terms so they know their
|
|
rights.
|
|
|
|
We protect your rights with two steps: (1) copyright the software, and
|
|
(2) offer you this license which gives you legal permission to copy,
|
|
distribute and/or modify the software.
|
|
|
|
Also, for each author's protection and ours, we want to make certain
|
|
that everyone understands that there is no warranty for this free
|
|
software. If the software is modified by someone else and passed on, we
|
|
want its recipients to know that what they have is not the original, so
|
|
that any problems introduced by others will not reflect on the original
|
|
authors' reputations.
|
|
|
|
Finally, any free program is threatened constantly by software
|
|
patents. We wish to avoid the danger that redistributors of a free
|
|
program will individually obtain patent licenses, in effect making the
|
|
program proprietary. To prevent this, we have made it clear that any
|
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
|
The precise terms and conditions for copying, distribution and
|
|
modification follow.
|
|
|
|
@iftex
|
|
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end iftex
|
|
@ifinfo
|
|
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end ifinfo
|
|
|
|
@enumerate
|
|
@item
|
|
This License applies to any program or other work which contains
|
|
a notice placed by the copyright holder saying it may be distributed
|
|
under the terms of this General Public License. The ``Program'', below,
|
|
refers to any such program or work, and a ``work based on the Program''
|
|
means either the Program or any derivative work under copyright law:
|
|
that is to say, a work containing the Program or a portion of it,
|
|
either verbatim or with modifications and/or translated into another
|
|
language. (Hereinafter, translation is included without limitation in
|
|
the term ``modification''.) Each licensee is addressed as ``you''.
|
|
|
|
Activities other than copying, distribution and modification are not
|
|
covered by this License; they are outside its scope. The act of
|
|
running the Program is not restricted, and the output from the Program
|
|
is covered only if its contents constitute a work based on the
|
|
Program (independent of having been made by running the Program).
|
|
Whether that is true depends on what the Program does.
|
|
|
|
@item
|
|
You may copy and distribute verbatim copies of the Program's
|
|
source code as you receive it, in any medium, provided that you
|
|
conspicuously and appropriately publish on each copy an appropriate
|
|
copyright notice and disclaimer of warranty; keep intact all the
|
|
notices that refer to this License and to the absence of any warranty;
|
|
and give any other recipients of the Program a copy of this License
|
|
along with the Program.
|
|
|
|
You may charge a fee for the physical act of transferring a copy, and
|
|
you may at your option offer warranty protection in exchange for a fee.
|
|
|
|
@item
|
|
You may modify your copy or copies of the Program or any portion
|
|
of it, thus forming a work based on the Program, and copy and
|
|
distribute such modifications or work under the terms of Section 1
|
|
above, provided that you also meet all of these conditions:
|
|
|
|
@enumerate a
|
|
@item
|
|
You must cause the modified files to carry prominent notices
|
|
stating that you changed the files and the date of any change.
|
|
|
|
@item
|
|
You must cause any work that you distribute or publish, that in
|
|
whole or in part contains or is derived from the Program or any
|
|
part thereof, to be licensed as a whole at no charge to all third
|
|
parties under the terms of this License.
|
|
|
|
@item
|
|
If the modified program normally reads commands interactively
|
|
when run, you must cause it, when started running for such
|
|
interactive use in the most ordinary way, to print or display an
|
|
announcement including an appropriate copyright notice and a
|
|
notice that there is no warranty (or else, saying that you provide
|
|
a warranty) and that users may redistribute the program under
|
|
these conditions, and telling the user how to view a copy of this
|
|
License. (Exception: if the Program itself is interactive but
|
|
does not normally print such an announcement, your work based on
|
|
the Program is not required to print an announcement.)
|
|
@end enumerate
|
|
|
|
These requirements apply to the modified work as a whole. If
|
|
identifiable sections of that work are not derived from the Program,
|
|
and can be reasonably considered independent and separate works in
|
|
themselves, then this License, and its terms, do not apply to those
|
|
sections when you distribute them as separate works. But when you
|
|
distribute the same sections as part of a whole which is a work based
|
|
on the Program, the distribution of the whole must be on the terms of
|
|
this License, whose permissions for other licensees extend to the
|
|
entire whole, and thus to each and every part regardless of who wrote it.
|
|
|
|
Thus, it is not the intent of this section to claim rights or contest
|
|
your rights to work written entirely by you; rather, the intent is to
|
|
exercise the right to control the distribution of derivative or
|
|
collective works based on the Program.
|
|
|
|
In addition, mere aggregation of another work not based on the Program
|
|
with the Program (or with a work based on the Program) on a volume of
|
|
a storage or distribution medium does not bring the other work under
|
|
the scope of this License.
|
|
|
|
@item
|
|
You may copy and distribute the Program (or a work based on it,
|
|
under Section 2) in object code or executable form under the terms of
|
|
Sections 1 and 2 above provided that you also do one of the following:
|
|
|
|
@enumerate a
|
|
@item
|
|
Accompany it with the complete corresponding machine-readable
|
|
source code, which must be distributed under the terms of Sections
|
|
1 and 2 above on a medium customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with a written offer, valid for at least three
|
|
years, to give any third party, for a charge no more than your
|
|
cost of physically performing source distribution, a complete
|
|
machine-readable copy of the corresponding source code, to be
|
|
distributed under the terms of Sections 1 and 2 above on a medium
|
|
customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with the information you received as to the offer
|
|
to distribute corresponding source code. (This alternative is
|
|
allowed only for noncommercial distribution and only if you
|
|
received the program in object code or executable form with such
|
|
an offer, in accord with Subsection b above.)
|
|
@end enumerate
|
|
|
|
The source code for a work means the preferred form of the work for
|
|
making modifications to it. For an executable work, complete source
|
|
code means all the source code for all modules it contains, plus any
|
|
associated interface definition files, plus the scripts used to
|
|
control compilation and installation of the executable. However, as a
|
|
special exception, the source code distributed need not include
|
|
anything that is normally distributed (in either source or binary
|
|
form) with the major components (compiler, kernel, and so on) of the
|
|
operating system on which the executable runs, unless that component
|
|
itself accompanies the executable.
|
|
|
|
If distribution of executable or object code is made by offering
|
|
access to copy from a designated place, then offering equivalent
|
|
access to copy the source code from the same place counts as
|
|
distribution of the source code, even though third parties are not
|
|
compelled to copy the source along with the object code.
|
|
|
|
@item
|
|
You may not copy, modify, sublicense, or distribute the Program
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense or distribute the Program is
|
|
void, and will automatically terminate your rights under this License.
|
|
However, parties who have received copies, or rights, from you under
|
|
this License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
|
|
@item
|
|
You are not required to accept this License, since you have not
|
|
signed it. However, nothing else grants you permission to modify or
|
|
distribute the Program or its derivative works. These actions are
|
|
prohibited by law if you do not accept this License. Therefore, by
|
|
modifying or distributing the Program (or any work based on the
|
|
Program), you indicate your acceptance of this License to do so, and
|
|
all its terms and conditions for copying, distributing or modifying
|
|
the Program or works based on it.
|
|
|
|
@item
|
|
Each time you redistribute the Program (or any work based on the
|
|
Program), the recipient automatically receives a license from the
|
|
original licensor to copy, distribute or modify the Program subject to
|
|
these terms and conditions. You may not impose any further
|
|
restrictions on the recipients' exercise of the rights granted herein.
|
|
You are not responsible for enforcing compliance by third parties to
|
|
this License.
|
|
|
|
@item
|
|
If, as a consequence of a court judgment or allegation of patent
|
|
infringement or for any other reason (not limited to patent issues),
|
|
conditions are imposed on you (whether by court order, agreement or
|
|
otherwise) that contradict the conditions of this License, they do not
|
|
excuse you from the conditions of this License. If you cannot
|
|
distribute so as to satisfy simultaneously your obligations under this
|
|
License and any other pertinent obligations, then as a consequence you
|
|
may not distribute the Program at all. For example, if a patent
|
|
license would not permit royalty-free redistribution of the Program by
|
|
all those who receive copies directly or indirectly through you, then
|
|
the only way you could satisfy both it and this License would be to
|
|
refrain entirely from distribution of the Program.
|
|
|
|
If any portion of this section is held invalid or unenforceable under
|
|
any particular circumstance, the balance of the section is intended to
|
|
apply and the section as a whole is intended to apply in other
|
|
circumstances.
|
|
|
|
It is not the purpose of this section to induce you to infringe any
|
|
patents or other property right claims or to contest validity of any
|
|
such claims; this section has the sole purpose of protecting the
|
|
integrity of the free software distribution system, which is
|
|
implemented by public license practices. Many people have made
|
|
generous contributions to the wide range of software distributed
|
|
through that system in reliance on consistent application of that
|
|
system; it is up to the author/donor to decide if he or she is willing
|
|
to distribute software through any other system and a licensee cannot
|
|
impose that choice.
|
|
|
|
This section is intended to make thoroughly clear what is believed to
|
|
be a consequence of the rest of this License.
|
|
|
|
@item
|
|
If the distribution and/or use of the Program is restricted in
|
|
certain countries either by patents or by copyrighted interfaces, the
|
|
original copyright holder who places the Program under this License
|
|
may add an explicit geographical distribution limitation excluding
|
|
those countries, so that distribution is permitted only in or among
|
|
countries not thus excluded. In such case, this License incorporates
|
|
the limitation as if written in the body of this License.
|
|
|
|
@item
|
|
The Free Software Foundation may publish revised and/or new versions
|
|
of the General Public License from time to time. Such new versions will
|
|
be similar in spirit to the present version, but may differ in detail to
|
|
address new problems or concerns.
|
|
|
|
Each version is given a distinguishing version number. If the Program
|
|
specifies a version number of this License which applies to it and ``any
|
|
later version'', you have the option of following the terms and conditions
|
|
either of that version or of any later version published by the Free
|
|
Software Foundation. If the Program does not specify a version number of
|
|
this License, you may choose any version ever published by the Free Software
|
|
Foundation.
|
|
|
|
@item
|
|
If you wish to incorporate parts of the Program into other free
|
|
programs whose distribution conditions are different, write to the author
|
|
to ask for permission. For software which is copyrighted by the Free
|
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
make exceptions for this. Our decision will be guided by the two goals
|
|
of preserving the free status of all derivatives of our free software and
|
|
of promoting the sharing and reuse of software generally.
|
|
|
|
@iftex
|
|
@heading NO WARRANTY
|
|
@end iftex
|
|
@ifinfo
|
|
@center NO WARRANTY
|
|
@end ifinfo
|
|
|
|
@item
|
|
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
REPAIR OR CORRECTION.
|
|
|
|
@item
|
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGES.
|
|
@end enumerate
|
|
|
|
@iftex
|
|
@heading END OF TERMS AND CONDITIONS
|
|
@end iftex
|
|
@ifinfo
|
|
@center END OF TERMS AND CONDITIONS
|
|
@end ifinfo
|
|
|
|
@page
|
|
@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
|
|
|
|
If you develop a new program, and you want it to be of the greatest
|
|
possible use to the public, the best way to achieve this is to make it
|
|
free software which everyone can redistribute and change under these terms.
|
|
|
|
To do so, attach the following notices to the program. It is safest
|
|
to attach them to the start of each source file to most effectively
|
|
convey the exclusion of warranty; and each file should have at least
|
|
the ``copyright'' line and a pointer to where the full notice is found.
|
|
|
|
@smallexample
|
|
@var{one line to give the program's name and a brief idea of what it does.}
|
|
Copyright (C) 19@var{yy} @var{name of author}
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
@end smallexample
|
|
|
|
Also add information on how to contact you by electronic and paper mail.
|
|
|
|
If the program is interactive, make it output a short notice like this
|
|
when it starts in an interactive mode:
|
|
|
|
@smallexample
|
|
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
|
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
This is free software, and you are welcome to redistribute it
|
|
under certain conditions; type `show c' for details.
|
|
@end smallexample
|
|
|
|
The hypothetical commands @samp{show w} and @samp{show c} should show
|
|
the appropriate parts of the General Public License. Of course, the
|
|
commands you use may be called something other than @samp{show w} and
|
|
@samp{show c}; they could even be mouse-clicks or menu items---whatever
|
|
suits your program.
|
|
|
|
You should also get your employer (if you work as a programmer) or your
|
|
school, if any, to sign a ``copyright disclaimer'' for the program, if
|
|
necessary. Here is a sample; alter the names:
|
|
|
|
@example
|
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
|
|
@var{signature of Ty Coon}, 1 April 1989
|
|
Ty Coon, President of Vice
|
|
@end example
|
|
|
|
This General Public License does not permit incorporating your program into
|
|
proprietary programs. If your program is a subroutine library, you may
|
|
consider it more useful to permit linking proprietary applications with the
|
|
library. If this is what you want to do, use the GNU Library General
|
|
Public License instead of this License.
|
|
|
|
@node Installation, About pcl-cvs, Copying, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Installation
|
|
@cindex Installation
|
|
|
|
This section describes the installation of pcl-cvs, the GNU Emacs CVS
|
|
front-end. You should install not only the elisp files themselves, but
|
|
also the on-line documentation so that your users will know how to use
|
|
it. You can create typeset documentation from the file
|
|
@file{pcl-cvs.texinfo} as well as an on-line info file. The following
|
|
steps are also described in the file @file{INSTALL} in the source
|
|
directory.
|
|
|
|
@menu
|
|
* Pcl-cvs installation:: How to install pcl-cvs on your system.
|
|
* On-line manual installation:: How to install the on-line manual.
|
|
* Typeset manual installation:: How to create typeset documentation
|
|
about pcl-cvs.
|
|
@end menu
|
|
|
|
@node Pcl-cvs installation, On-line manual installation, Installation, Installation
|
|
@comment node-name, next, previous, up
|
|
@section Installation of the pcl-cvs program
|
|
@cindex Installation of elisp files
|
|
|
|
@enumerate
|
|
@item
|
|
Edit the file @file{Makefile} to reflect the situation at your site.
|
|
The only things you have to change is the definition of @code{lispdir}
|
|
and @code{infodir}. The elisp files will be copied to @code{lispdir},
|
|
and the info file to @code{infodir}.
|
|
|
|
@item
|
|
Configure pcl-cvs.el
|
|
|
|
There are a couple of paths that you have to check to make sure that
|
|
they match you system. They appear early in the file pcl-cvs.el.
|
|
|
|
@strong{NOTE:} If your system is running emacs 18.57 or earlier you MUST
|
|
uncomment the line that says:
|
|
|
|
@example
|
|
(setq delete-exited-processes nil)
|
|
@end example
|
|
|
|
Setting @code{delete-exited-processes} to @code{nil} works around a bug
|
|
in emacs that causes it to dump core. The bug was fixed in emacs
|
|
18.58.@refill
|
|
|
|
@item
|
|
Type @samp{make install} in the source directory. This will
|
|
byte-compile all @file{.el} files and copy both the @file{.el} and the
|
|
@file{.elc} into the directory you specified in step 1.
|
|
|
|
If you don't want to install the @file{.el} files but only the
|
|
@file{.elc} files (the byte-compiled files), you can type `@samp{make
|
|
install_elc}' instead of `@samp{make install}'.
|
|
|
|
If you only want to create the compiled elisp files, but don't want to
|
|
install them, you can type @samp{make elcfiles} instead. This is what
|
|
happens if you only type @samp{make} without parameters.
|
|
|
|
@item
|
|
Edit the file @file{default.el} in your emacs lisp directory (usually
|
|
@file{/usr/gnu/emacs/lisp} or something similar) and enter the contents
|
|
of the file @file{pcl-cvs-startup.el} into it. It contains a couple of
|
|
@code{auto-load}s that facilitates the use of pcl-cvs.
|
|
|
|
@end enumerate
|
|
|
|
@node On-line manual installation, Typeset manual installation, Pcl-cvs installation, Installation
|
|
@comment node-name, next, previous, up
|
|
@section Installation of the on-line manual.
|
|
@cindex Manual installation (on-line)
|
|
@cindex Installation of on-line manual
|
|
@cindex Generating the on-line manual
|
|
@cindex On-line manual (how to generate)
|
|
@cindex Info-file (how to generate)
|
|
|
|
@enumerate
|
|
@item
|
|
Create the info file @file{pcl-cvs} from @file{pcl-cvs.texinfo} by
|
|
typing @samp{make info}. If you don't have the program @samp{makeinfo}
|
|
you can get it by anonymous ftp from e.g. @samp{ftp.gnu.ai.mit.edu} as
|
|
@file{pub/gnu/texinfo-2.14.tar.Z} (there might be a newer version there
|
|
when you read this), or you could use the preformatted info file
|
|
@file{pcl-cvs.info} that is included in the distribution (type
|
|
@samp{cp pcl-cvs.info pcl-cvs}).@refill
|
|
|
|
@item
|
|
Move the info file @file{pcl-cvs} to your standard info directory.
|
|
This might be called something like @file{/usr/gnu/emacs/info}.@refill
|
|
|
|
@item
|
|
Edit the file @file{dir} in the info directory and enter one line to
|
|
contain a pointer to the info file @file{pcl-cvs}. The line can, for
|
|
instance, look like this:@refill
|
|
|
|
@example
|
|
* Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
|
|
@end example
|
|
@end enumerate
|
|
|
|
@node Typeset manual installation, , On-line manual installation, Installation
|
|
@comment node-name, next, previous, up
|
|
@section How to make typeset documentation from pcl-cvs.texinfo
|
|
@cindex Manual installation (typeset)
|
|
@cindex Installation of typeset manual
|
|
@cindex Printing a manual
|
|
@cindex TeX - generating a typeset manual
|
|
@cindex Generating a typeset manual
|
|
|
|
If you have @TeX{} installed at your site, you can make a typeset manual
|
|
from @file{pcl-cvs.texinfo}.
|
|
|
|
@enumerate
|
|
@item
|
|
Run @TeX{} by typing `@samp{make pcl-cvs.dvi}'. You will not get the
|
|
indices unless you have the @code{texindex} program.
|
|
|
|
@item
|
|
Convert the resulting device independent file @file{pcl-cvs.dvi} to a
|
|
form which your printer can output and print it. If you have a
|
|
postscript printer there is a program, @code{dvi2ps}, which does. There
|
|
is also a program which comes together with @TeX{}, @code{dvips}, which
|
|
you can use.
|
|
|
|
@end enumerate
|
|
|
|
@node About pcl-cvs, Getting started, Installation, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter About pcl-cvs
|
|
@cindex About pcl-cvs
|
|
|
|
Pcl-cvs is a front-end to CVS version 1.3. It integrates the most
|
|
frequently used CVS commands into emacs.
|
|
|
|
@menu
|
|
* Contributors:: Contributors to pcl-cvs.
|
|
* Archives:: Where can I get a copy of Pcl-Cvs?
|
|
@end menu
|
|
|
|
@node Contributors, Archives, About pcl-cvs, About pcl-cvs
|
|
@comment node-name, next, previous, up
|
|
@section Contributors to pcl-cvs
|
|
@cindex Contributors
|
|
@cindex Authors
|
|
|
|
Contributions to the package are welcome. I have limited time to work
|
|
on this project, but I will gladly add any code that you contribute to
|
|
me to this package (@pxref{Reporting bugs and ideas}).
|
|
|
|
The following persons have made contributions to pcl-cvs.
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Brian Berliner wrote CVS, together with some other contributors.
|
|
Without his work on CVS this package would be useless@dots{}
|
|
|
|
@item
|
|
Per Cederqvist wrote most of the otherwise unattributed functions in
|
|
pcl-cvs as well as all documentation.
|
|
|
|
@item
|
|
Inge Wallin (@samp{inge@@lysator.liu.se}) wrote the skeleton to
|
|
@file{pcl-cvs.texinfo}, and gave useful comments on it. He also wrote
|
|
the files @file{elib-node.el} and @file{compile-all.el}. The file
|
|
@file{cookie.el} was inspired by Inge.@refill
|
|
|
|
@item
|
|
Linus Tolke (@samp{linus@@lysator.liu.se}) contributed useful comments
|
|
on both the functionality and the documentation.@refill
|
|
|
|
@end itemize
|
|
|
|
|
|
@node Archives, , Contributors, About pcl-cvs
|
|
@comment node-name, next, previous, up
|
|
@section Where can I get pcl-cvs?
|
|
@cindex Sites
|
|
@cindex Archives
|
|
@cindex Ftp-sites
|
|
@cindex Getting pcl-cvs
|
|
@cindex Email archives
|
|
|
|
This release of pcl-cvs is included in the CVS 1.3 distribution.
|
|
However, since pcl-cvs has had less time to mature (the first line of
|
|
code was written less than a year ago) it is likely that there will be a
|
|
new release of pcl-cvs before the next release of CVS.
|
|
|
|
The latest release of pcl-cvs can be fetched via anonymous ftp from
|
|
@code{ftp.lysator.liu.se}, (IP no. 130.236.254.1) in the directory
|
|
@code{pub/emacs}. If you don't live in Scandinavia you should probably
|
|
check with archie to see if there is a site closer to you that archives
|
|
pcl-cvs.
|
|
|
|
New releases will be announced to appropriate newsgroups. If you send
|
|
your email address to me I will add you to my list of people to mail
|
|
when I make a new release.
|
|
|
|
@node Getting started, Buffer contents, About pcl-cvs, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Getting started
|
|
@cindex Introduction
|
|
@cindex Example run
|
|
|
|
This document assumes that you know what CVS is, and that you at least
|
|
knows the fundamental concepts of CVS. If that is not the case you
|
|
should read the man page for CVS.
|
|
|
|
Pcl-cvs is only useful once you have checked out a module. So before
|
|
you invoke it you must have a copy of a module somewhere in the file
|
|
system.
|
|
|
|
You invoke pcl-cvs by typing @kbd{M-x pcl-cvs RET}. If your emacs
|
|
responds with @samp{[No match]} your system administrator has not
|
|
installed pcl-cvs properly. Try @kbd{M-x load-library RET pcl-cvs RET}.
|
|
If that also fails - talk to your root. If it succeeds you might put
|
|
this line in your @file{.emacs} file so that you don't have to type the
|
|
@samp{load-library} command every time you wish to use pcl-cvs:
|
|
|
|
@example
|
|
(autoload 'cvs-update "pcl-cvs" nil t)
|
|
@end example
|
|
|
|
The function @code{cvs-update} will ask for a directory. The command
|
|
@samp{cvs update} will be run in that directory. (It should contain
|
|
files that have been checked out from a CVS archive.) The output from
|
|
@code{cvs} will be parsed and presented in a table in a buffer called
|
|
@samp{*cvs*}. It might look something like this:
|
|
|
|
@example
|
|
PCL-CVS release 1.02.
|
|
@comment -release-
|
|
|
|
In directory /users/ceder/FOO/test:
|
|
Updated bar
|
|
Updated file.txt
|
|
Modified ci namechange
|
|
Updated newer
|
|
|
|
In directory /users/ceder/FOO/test/sub:
|
|
Modified ci ChangeLog
|
|
---------- End -----
|
|
@end example
|
|
|
|
In this example the three files (@file{bar}, @file{file.txt} and
|
|
@file{newer}) that are marked with @samp{Updated} have been copied from
|
|
the CVS repository to @file{/users/ceder/FOO/test/} since someone else
|
|
have checked in newer versions of them. Two files (@file{namechange}
|
|
and @file{sub/ChangeLog}) have been modified locally, and needs to be
|
|
checked in.
|
|
|
|
You can move the cursor up and down in the buffer with @kbd{C-n} and
|
|
@kbd{C-p} or @kbd{n} and @kbd{p}. If you press @kbd{c} on one of the
|
|
@samp{Modified} files that file will be checked in to the CVS
|
|
repository. @xref{Committing changes}. You can press @kbd{x} to get rid
|
|
of the "uninteresting" files that have only been @samp{Updated} (and
|
|
don't require any further action from you).@refill
|
|
|
|
You can also easily get a @samp{diff} between your modified file and the
|
|
base version that you started from, and you can get the output from
|
|
@samp{cvs log} and @samp{cvs status} on the listed files simply by
|
|
pressing a key (@pxref{Getting info about files}).
|
|
|
|
@node Buffer contents, Commands, Getting started, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Buffer contents
|
|
@cindex Buffer contents
|
|
|
|
The display contains four columns. They contain, from left to right:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
An asterisk when the file is @dfn{marked} (@pxref{Selected
|
|
files}).@refill
|
|
@item
|
|
The status of the file. See @xref{File status}, for more information.@refill
|
|
@item
|
|
A "need to be checked in"-marker (@samp{ci}).
|
|
@item
|
|
The file name.
|
|
@end itemize
|
|
|
|
@menu
|
|
* File status:: The meaning of the second field.
|
|
* Selected files:: How selection works.
|
|
@end menu
|
|
|
|
@node File status, Selected files, Buffer contents, Buffer contents
|
|
@comment node-name, next, previous, up
|
|
@section File status
|
|
@cindex File status
|
|
@cindex Updated (file status)
|
|
@cindex Modified (file status)
|
|
@cindex Merged (file status)
|
|
@cindex Conflict (file status)
|
|
@cindex Added (file status)
|
|
@cindex Removed (file status)
|
|
@cindex Unknown (file status)
|
|
@cindex Removed from repository (file status)
|
|
@cindex Removed from repository, changed by you (file status)
|
|
@cindex Removed by you, changed in repository (file status)
|
|
@cindex Move away @var{file} - it is in the way (file status)
|
|
@cindex This repository is missing!@dots{} (file status)
|
|
|
|
The @samp{file status} field can have the following values:
|
|
|
|
@table @samp
|
|
@item Updated
|
|
The file was brought up to date with respect to the repository. This is
|
|
done for any file that exists in the repository but not in your source,
|
|
and for files that you haven't changed but are not the most recent
|
|
versions available in the repository.@refill
|
|
|
|
@item Modified
|
|
The file is modified in your working directory, and there was no
|
|
modification to the same file in the repository.@refill
|
|
|
|
@item Merged
|
|
The file is modified in your working directory, and there were
|
|
modifications in the repository as well as in your copy, but they were
|
|
merged successfully, without conflict, in your working directory.@refill
|
|
|
|
@item Conflict
|
|
A conflict was detected while trying to merge your changes to @var{file}
|
|
with changes from the source repository. @var{file} (the copy in your
|
|
working directory) is now the output of the @samp{rcsmerge} command on
|
|
the two versions; an unmodified copy of your file is also in your
|
|
working directory, with the name @file{.#@var{file}.@var{version}},
|
|
where @var{version} is the RCS revision that your modified file started
|
|
from. @xref{Viewing differences}, for more details.@refill
|
|
|
|
@item Added
|
|
The file has been added by you, but it still needs to be checked in to
|
|
the repository.@refill
|
|
|
|
@item Removed
|
|
The file has been removed by you, but it needs to be checked in to the
|
|
repository. You can resurrect it by typing @kbd{a} (@pxref{Adding and
|
|
removing files}).@refill
|
|
|
|
@item Unknown
|
|
A file that was detected in your directory, but that neither appears in
|
|
the repository, nor is present on the list of files that CVS should
|
|
ignore.@refill
|
|
|
|
@end table
|
|
|
|
There are also a few special cases, that rarely occur, which have longer
|
|
strings in the fields:
|
|
|
|
@table @samp
|
|
@item Removed from repository
|
|
The file has been removed from your directory since someone has removed
|
|
it from the repository. (It is still present in the Attic directory, so
|
|
no permanent loss has occurred). This, unlike the other entries in this
|
|
table, is not an error condition.@refill
|
|
|
|
@item Removed from repository, changed by you
|
|
You have modified a file that someone have removed from the repository.
|
|
You can correct this situation by removing the file manually (see
|
|
@pxref{Adding and removing files}).@refill
|
|
|
|
@item Removed by you, changed in repository
|
|
You have removed a file, and before you committed the removal someone
|
|
committed a change to that file. You could use @kbd{a} to resurrect the
|
|
file (see @pxref{Adding and removing files}).@refill
|
|
|
|
@item Move away @var{file} - it is in the way
|
|
For some reason CVS does not like the file @var{file}. Rename or remove
|
|
it.@refill
|
|
|
|
@item This repository is missing! Remove this dir manually.
|
|
It is impossible to remove a directory in the CVS repository in a clean
|
|
way. Someone have tried to remove one, and CVS gets confused. Remove
|
|
your copy of the directory.@refill
|
|
@end table
|
|
|
|
@node Selected files, , File status, Buffer contents
|
|
@comment node-name, next, previous, up
|
|
@section Selected files
|
|
@cindex Selected files
|
|
@cindex Marked files
|
|
@cindex File selection
|
|
@cindex Active files
|
|
|
|
Many of the commands works on the current set of @dfn{selected} files.
|
|
|
|
@itemize @bullet
|
|
@item
|
|
If there are any files that are marked they constitute the set of
|
|
selected files.@refill
|
|
@item
|
|
Otherwise, if the cursor points to a file, that file is the selected
|
|
file.@refill
|
|
@item
|
|
Otherwise, if the cursor points to a directory, all the files in that
|
|
directory that appears in the buffer are the selected files.
|
|
@end itemize
|
|
|
|
This scheme might seem a little complicated, but once one get used to
|
|
it, it is quite powerful.
|
|
|
|
@xref{Marking files} tells how you mark and unmark files.
|
|
|
|
@node Commands, Customization, Buffer contents, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Commands
|
|
|
|
@iftex
|
|
This chapter describes all the commands that you can use in pcl-cvs.
|
|
@end iftex
|
|
@ifinfo
|
|
The nodes in this menu contains explanations about all the commands that
|
|
you can use in pcl-cvs. They are grouped together by type.
|
|
@end ifinfo
|
|
|
|
@menu
|
|
* Updating the directory:: Commands to update the local directory
|
|
* Movement commands:: How to move up and down in the buffer
|
|
* Marking files:: How to mark files that other commands
|
|
will later operate on.
|
|
* Committing changes:: Checking in your modifications to the
|
|
CVS repository.
|
|
* Editing files:: Loading files into Emacs.
|
|
* Getting info about files:: Display the log and status of files.
|
|
* Adding and removing files:: Adding and removing files
|
|
* Removing handled entries:: Uninteresting lines can easily be removed.
|
|
* Ignoring files:: Telling CVS to ignore generated files.
|
|
* Viewing differences:: Commands to @samp{diff} different versions.
|
|
@end menu
|
|
|
|
@node Updating the directory, Movement commands, Commands, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Updating the directory
|
|
@findex cvs-update
|
|
@findex cvs-update-no-prompt
|
|
@kindex g - Rerun @samp{cvs update}
|
|
|
|
|
|
@table @kbd
|
|
|
|
@item M-x cvs-update
|
|
Run a @samp{cvs update} command. You will be asked for the directory in
|
|
which the @samp{cvs update} will be run. The output will be parsed by
|
|
pcl-cvs, and the result printed in the @samp{*cvs*} buffer (see
|
|
@pxref{Buffer contents} for a description of the contents).@refill
|
|
|
|
By default, @samp{cvs-update} will descend recursively into
|
|
subdirectories. You can avoid that behavior by giving a prefix
|
|
argument to it (e.g., by typing @kbd{C-u M-x cvs-update RET}).@refill
|
|
|
|
All other commands in pcl-cvs requires that you have a @samp{*cvs*}
|
|
buffer. This is the command that you use to get one.@refill
|
|
|
|
@item g
|
|
This will run @samp{cvs update} again. It will always use the same
|
|
buffer that was used with the previous @samp{cvs update}. Give a prefix
|
|
argument to avoid descending into subdirectories. This runs the command
|
|
@samp{cvs-update-no-prompt}.@refill
|
|
@end table
|
|
@node Movement commands, Marking files, Updating the directory, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Movement Commands
|
|
@cindex Movement Commands
|
|
@findex cookie-next-cookie
|
|
@findex cookie-previous-cookie
|
|
@kindex SPC - Move down one file
|
|
@kindex C-n - Move down one file
|
|
@kindex n - Move down one file
|
|
@kindex C-p - Move up one file
|
|
@kindex p - Move up on file
|
|
|
|
You can use most normal Emacs commands to move forward and backward in
|
|
the buffer. Some keys are rebound to functions that take advantage of
|
|
the fact that the buffer is a pcl-cvs buffer:
|
|
|
|
|
|
@table @kbd
|
|
@item SPC
|
|
@itemx C-n
|
|
@itemx n
|
|
These keys move the cursor one file forward, towards the end of the
|
|
buffer (@code{cookie-next-cookie}).
|
|
|
|
@item C-p
|
|
@itemx p
|
|
These keys move one file backward, towards the beginning of the buffer
|
|
(@code{cookie-previous-cookie}).
|
|
@end table
|
|
|
|
@node Marking files, Committing changes, Movement commands, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Marking files
|
|
@cindex Selecting files (commands to mark files)
|
|
@cindex Marking files
|
|
@kindex m - marking a file
|
|
@kindex M - marking all files
|
|
@kindex u - unmark a file
|
|
@kindex U - unmark all files
|
|
@kindex DEL - unmark previous file
|
|
@findex cvs-mark
|
|
@findex cvs-unmark
|
|
@findex cvs-mark-all-files
|
|
@findex cvs-unmark-all-files
|
|
@findex cvs-unmark-up
|
|
|
|
Pcl-cvs works on a set of @dfn{selected files} (@pxref{Selected files}).
|
|
You can mark and unmark files with these commands:
|
|
|
|
@table @kbd
|
|
@item m
|
|
This marks the file that the cursor is positioned on. If the cursor is
|
|
positioned on a directory all files in that directory will be marked.
|
|
(@code{cvs-mark}).
|
|
|
|
@item u
|
|
Unmark the file that the cursor is positioned on. If the cursor is on a
|
|
directory, all files in that directory will be unmarked.
|
|
(@code{cvs-unmark}).@refill
|
|
|
|
@item M
|
|
Mark @emph{all} files in the buffer (@code{cvs-mark-all-files}).
|
|
|
|
@item U
|
|
Unmark @emph{all} files (@code{cvs-unmark-all-files}).
|
|
|
|
@item @key{DEL}
|
|
Unmark the file on the previous line, and move point to that line
|
|
(@code{cvs-unmark-up}).
|
|
@end table
|
|
|
|
@node Committing changes, Editing files, Marking files, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Committing changes
|
|
@cindex Committing changes
|
|
@cindex Ci
|
|
@findex cvs-commit
|
|
@kindex c - commit files
|
|
@vindex cvs-erase-input-buffer (variable)
|
|
@cindex Commit buffer
|
|
@cindex Edit buffer
|
|
@cindex Erasing commit message
|
|
|
|
@table @kbd
|
|
@item c
|
|
All files that have a "need to be checked in"-marker (@pxref{Buffer
|
|
contents}) can be checked in with the @kbd{c} command. It checks in all
|
|
selected files (@pxref{Selected files}) (except those who lack the
|
|
"ci"-marker - they are ignored). Pressing @kbd{c} causes
|
|
@code{cvs-commit} to be run.@refill
|
|
|
|
When you press @kbd{c} you will get a buffer called
|
|
@samp{*cvs-commit-message*}. Enter the log message for the file(s) in
|
|
it. When you are ready you should press @kbd{C-c C-c} to actually
|
|
commit the files (using @code{cvs-edit-done}).
|
|
|
|
Normally the @samp{*cvs-commit-message*} buffer will retain the log
|
|
message from the previous commit, but if the variable
|
|
@code{cvs-erase-input-buffer} is set to a non-nil value the buffer will
|
|
be erased. Point and mark will always be located around the entire
|
|
buffer so that you can easily erase it with @kbd{C-w}
|
|
(@samp{kill-region}).@refill
|
|
@end table
|
|
|
|
@node Editing files, Getting info about files, Committing changes, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Editing files
|
|
|
|
@cindex Editing files
|
|
@cindex Finding files
|
|
@cindex Loading files
|
|
@cindex Dired
|
|
@cindex Invoking dired
|
|
@findex cvs-find-file
|
|
@findex cvs-find-file-other-window
|
|
@findex cvs-add-change-log-entry-other-window
|
|
@kindex f - find file or directory
|
|
@kindex o - find file in other window
|
|
@kindex A - add ChangeLog entry
|
|
|
|
There are currently three commands that can be used to find a file (that
|
|
is, load it into a buffer and start editing it there). These commands
|
|
work on the line that the cursor is situated at. They ignore any marked
|
|
files.
|
|
|
|
@table @kbd
|
|
@item f
|
|
Find the file that the cursor points to. Run @samp{dired}
|
|
@ifinfo
|
|
(@pxref{Dired,,,Emacs})
|
|
@end ifinfo
|
|
if the cursor points to a directory (@code{cvs-find-file}).@refill
|
|
|
|
@item o
|
|
Like @kbd{f}, but use another window
|
|
(@code{cvs-find-file-other-window}).@refill
|
|
|
|
@item A
|
|
Invoke @samp{add-change-log-entry-other-window} to edit a
|
|
@samp{ChangeLog} file. The @samp{ChangeLog} will be found in the
|
|
directory of the file the cursor points to.
|
|
(@code{cvs-add-change-log-entry-other-window}).@refill
|
|
@end table
|
|
|
|
@node Getting info about files, Adding and removing files, Editing files, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Getting info about files
|
|
@cindex Status (cvs command)
|
|
@cindex Log (RCS/cvs command)
|
|
@cindex Getting status
|
|
@kindex l - run @samp{cvs log}
|
|
@kindex s - run @samp{cvs status}
|
|
@findex cvs-log
|
|
@findex cvs-status
|
|
|
|
Both of the following commands can be customized.
|
|
@xref{Customization}.@refill
|
|
|
|
@table @kbd
|
|
@item l
|
|
Run @samp{cvs log} on all selected files, and show the result in a
|
|
temporary buffer (@code{cvs-log}).
|
|
|
|
@item s
|
|
Run @samp{cvs status} on all selected files, and show the result in a
|
|
temporary buffer (@code{cvs-status}).
|
|
@end table
|
|
|
|
@node Adding and removing files, Removing handled entries, Getting info about files, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Adding and removing files
|
|
@cindex Adding files
|
|
@cindex Removing files
|
|
@cindex Resurrecting files
|
|
@cindex Deleting files
|
|
@cindex Putting files under CVS control
|
|
@kindex a - add a file
|
|
@kindex r - remove a file
|
|
@findex cvs-add
|
|
@findex cvs-remove-file
|
|
|
|
The following commands are available to make it easy to add and remove
|
|
files from the CVS repository.
|
|
|
|
@table @kbd
|
|
@item a
|
|
Add all selected files. This command can be used on @samp{Unknown}
|
|
files (see @pxref{File status}). The status of the file will change to
|
|
@samp{Added}, and you will have to use @kbd{c} (@samp{cvs-commit}, see
|
|
@pxref{Committing changes}) to really add the file to the
|
|
repository.@refill
|
|
|
|
This command can also be used on @samp{Removed} files (before you commit
|
|
them) to resurrect them.
|
|
|
|
Selected files that are neither @samp{Unknown} nor @samp{Removed} will
|
|
be ignored by this command.
|
|
|
|
The command that is run is @code{cvs-add}.
|
|
|
|
@item r
|
|
This command removes the selected files (after prompting for
|
|
confirmation). The files are @samp{rm}ed from your directory and
|
|
(unless the status was @samp{Unknown}; @pxref{File status}) they will
|
|
also be @samp{cvs remove}d. If the files were @samp{Unknown} they will
|
|
disappear from the buffer. Otherwise their status will change to
|
|
@samp{Removed}, and you must use @kbd{c} (@samp{cvs-commit},
|
|
@pxref{Committing changes}) to commit the removal.@refill
|
|
|
|
The command that is run is @code{cvs-remove-file}.
|
|
@end table
|
|
|
|
@node Removing handled entries, Ignoring files, Adding and removing files, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Removing handled entries
|
|
@cindex Expunging uninteresting entries
|
|
@cindex Uninteresting entries, getting rid of them
|
|
@cindex Getting rid of uninteresting lines
|
|
@cindex Removing uninteresting (processed) lines
|
|
@cindex Handled lines, removing them
|
|
@kindex x - remove processed entries
|
|
@kindex C-k - remove selected entries
|
|
@findex cvs-remove-handled
|
|
@findex cvs-acknowledge
|
|
|
|
@table @kbd
|
|
@item x
|
|
This command allows you to remove all entries that you have processed.
|
|
More specifically, the lines for @samp{Updated} files (@pxref{File
|
|
status} and files that have been checked in (@pxref{Committing changes})
|
|
are removed from the buffer. If a directory becomes empty the heading
|
|
for that directory is also removed. This makes it easier to get an
|
|
overview of what needs to be done.
|
|
|
|
The command is called @code{cvs-remove-handled}. If
|
|
@samp{cvs-auto-remove-handled} is set to non-@samp{nil} this will
|
|
automatically be performed after every commit.@refill
|
|
|
|
@item C-k
|
|
This command can be used for lines that @samp{cvs-remove-handled} would
|
|
not delete, but that you want to delete (@code{cvs-acknowledge}).
|
|
@end table
|
|
|
|
@node Ignoring files, Viewing differences, Removing handled entries, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Ignoring files
|
|
|
|
@table @kbd
|
|
@item i
|
|
Arrange so that CVS will ignore the selected files. The file names are
|
|
added to the @file{.cvsignore} file in the corresponding directory. If
|
|
the @file{.cvsignore} doesn't exist it will be created.
|
|
|
|
The @file{.cvsignore} file should normally be added to the repository,
|
|
but you could ignore it also if you like it better that way.
|
|
|
|
This runs @code{cvs-ignore}.
|
|
@end table
|
|
|
|
@node Viewing differences, , Ignoring files, Commands
|
|
@comment node-name, next, previous, up
|
|
@section Viewing differences
|
|
@cindex Diff
|
|
@cindex Conflicts, how to resolve them
|
|
@cindex Viewing differences
|
|
@kindex d - run @samp{cvs diff}
|
|
@kindex b - diff backup file
|
|
@findex cvs-diff-cvs
|
|
@findex cvs-diff-backup
|
|
|
|
@table @kbd
|
|
@item d
|
|
Display a @samp{cvs diff} between the selected files and the RCS version
|
|
that they are based on. @xref{Customization} describes how you can send
|
|
flags to @samp{cvs diff}. (The function that does the job is
|
|
@code{cvs-diff-cvs}).@refill
|
|
|
|
@item b
|
|
If CVS finds a conflict while merging two versions of a file (during a
|
|
@samp{cvs update}, @pxref{Updating the directory}) it will save the
|
|
original file in a file called @file{.#@var{FILE}.@var{VERSION}} where
|
|
@var{FILE} is the name of the file, and @var{VERSION} is the RCS version
|
|
number that your file was based on.
|
|
|
|
With the @kbd{b} command you can run a @samp{diff} on the files
|
|
@file{.#@var{FILE}.@var{VERSION}} and @file{@var{FILE}}. You can get a
|
|
context- or Unidiff by setting @samp{cvs-diff-flags} -
|
|
@pxref{Customization}. This command only works on files that have
|
|
status @samp{Conflict} or @samp{Merged}. The name of the command is
|
|
@code{cvs-diff-backup}. @refill
|
|
@end table
|
|
|
|
@node Customization, Future enhancements, Commands, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Customization
|
|
@vindex cvs-erase-input-buffer (variable)
|
|
@vindex cvs-inhibit-copyright-message (variable)
|
|
@vindex cvs-cvs-diff-flags (variable)
|
|
@vindex cvs-diff-flags (variable)
|
|
@vindex cvs-log-flags (variable)
|
|
@vindex cvs-status-flags (variable)
|
|
@vindex cvs-auto-remove-handled (variable)
|
|
@cindex Inhibiting the Copyright message.
|
|
@cindex Copyright message, getting rid of it
|
|
@cindex Getting rid of the Copyright message.
|
|
@cindex Customization
|
|
@cindex Variables, list of all
|
|
@cindex Erasing the input buffer
|
|
@cindex Context diff, how to get
|
|
@cindex Unidiff, how to get
|
|
@cindex Automatically remove handled files
|
|
|
|
If you have an idea about any customization that would be handy but
|
|
isn't present in this list, please tell me! @xref{Reporting bugs and
|
|
ideas} for info on how to reach me.@refill
|
|
|
|
@table @samp
|
|
@item cvs-erase-input-buffer
|
|
If set to anything else than @samp{nil} the edit buffer will be erased
|
|
before you write the log message (@pxref{Committing changes}).
|
|
|
|
@item cvs-inhibit-copyright-message
|
|
The copyright message that is displayed on startup can be annoying after
|
|
a while. Set this variable to @samp{t} if you want to get rid of it.
|
|
(But don't set this to @samp{t} in the system defaults file - new users
|
|
should see this message at least once).
|
|
|
|
@item cvs-cvs-diff-flags
|
|
A list of strings to pass as arguments to the @samp{cvs diff} program.
|
|
This is used by @samp{cvs-diff-cvs} (key @kbd{d}, @pxref{Viewing
|
|
differences}). If you prefer the Unidiff format you could add this line
|
|
to your @file{.emacs} file:@refill
|
|
|
|
@example
|
|
(setq cvs-cvs-diff-flags '("-u"))
|
|
@end example
|
|
|
|
@item cvs-diff-flags
|
|
Like @samp{cvs-cvs-diff-flags}, but passed to @samp{diff}. This is used
|
|
by @samp{cvs-diff-backup} (key @kbd{b}, @pxref{Viewing differences}).
|
|
|
|
@item cvs-log-flags
|
|
List of strings to send to @samp{cvs log}. Used by @samp{cvs-log} (key
|
|
@kbd{l}, @pxref{Getting info about files}).
|
|
|
|
@item cvs-status-flags
|
|
List of strings to send to @samp{cvs status}. Used by @samp{cvs-status}
|
|
(key @kbd{s}, @pxref{Getting info about files}).
|
|
|
|
@item cvs-auto-remove-handled
|
|
If this variable is set to any non-@samp{nil} value
|
|
@samp{cvs-remove-handled} will be called every time you check in files,
|
|
after the check-in is ready. @xref{Removing handled entries}.@refill
|
|
|
|
@end table
|
|
@node Future enhancements, Reporting bugs and ideas, Customization, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Future enhancements
|
|
@cindex Enhancements
|
|
|
|
Pcl-cvs is still under development and needs a number of enhancements to
|
|
be called complete. Here is my current wish-list for future releases of
|
|
pcl-cvs:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Dired support. I have an experimental @file{dired-cvs.el} that works
|
|
together with CVS 1.2. Unfortunately I wrote it on top of a
|
|
non-standard @file{dired.el}, so it must be rewritten.@refill
|
|
|
|
@item
|
|
It should be possible to run commands such as @samp{cvs log}, @samp{cvs
|
|
status} and @samp{cvs commit} directly from a buffer containing a file,
|
|
instead of having to @samp{cvs-update}. If the directory contains many
|
|
files the @samp{cvs-update} can take quite some time, especially on a
|
|
slow machine.
|
|
@end itemize
|
|
|
|
|
|
If you miss something in this wish-list, let me know! I don't promise
|
|
that I will write it, but I will at least try to coordinate the efforts
|
|
of making a good Emacs front end to CVS. See @xref{Reporting bugs and
|
|
ideas} for information about how to reach me.@refill
|
|
|
|
|
|
@node Reporting bugs and ideas, Function and Variable Index, Future enhancements, Top
|
|
@comment node-name, next, previous, up
|
|
@chapter Reporting bugs and ideas
|
|
@cindex Reporting bugs and ideas
|
|
@cindex Bugs, how to report them
|
|
@cindex Author, how to reach
|
|
@cindex Email to the author
|
|
|
|
If you find a bug or misfeature, don't hesitate to tell me! Send email
|
|
to @samp{ceder@@lysator.liu.se}.
|
|
|
|
If you have ideas for improvements, or if you have written some
|
|
extensions to this package, I would like to hear from you. I hope that
|
|
you find this package useful!
|
|
|
|
|
|
@node Function and Variable Index, Concept Index, Reporting bugs and ideas, Top
|
|
@comment node-name, next, previous, up
|
|
@unnumbered Function and Variable Index
|
|
|
|
@printindex fn
|
|
|
|
@node Concept Index, Key Index, Function and Variable Index, Top
|
|
@comment node-name, next, previous, up
|
|
@unnumbered Concept Index
|
|
|
|
@printindex cp
|
|
|
|
@node Key Index, , Concept Index, Top
|
|
@comment node-name, next, previous, up
|
|
@unnumbered Key Index
|
|
|
|
@printindex ky
|
|
|
|
@summarycontents
|
|
@contents
|
|
@bye
|