mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2025-01-11 17:04:19 +01:00
1660 lines
70 KiB
Plaintext
1660 lines
70 KiB
Plaintext
This is Info file pcl-cvs, produced by Makeinfo-1.49 from the input
|
||
file pcl-cvs.texinfo.
|
||
|
||
Copyright (C) 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.
|
||
|
||
|
||
File: pcl-cvs, Node: Top, Next: Copying, Prev: (dir), Up: (dir)
|
||
|
||
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.05 of pcl-cvs.
|
||
|
||
* 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.
|
||
* Bugs:: Bugs (known and unknown).
|
||
* 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
|
||
* Undoing changes:: Undoing changes
|
||
* Removing handled entries:: Uninteresting lines can easily be removed.
|
||
* Ignoring files:: Telling CVS to ignore generated files.
|
||
* Viewing differences:: Commands to `diff' different versions.
|
||
* Emerge::
|
||
* Reverting your buffers:: Reverting your buffers
|
||
* Miscellaneous commands:: Miscellaneous commands
|
||
|
||
|
||
File: pcl-cvs, Node: Copying, Next: Installation, Prev: Top, Up: Top
|
||
|
||
GNU GENERAL PUBLIC LICENSE
|
||
**************************
|
||
|
||
Version 2, June 1991
|
||
|
||
Copyright (C) 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.
|
||
|
||
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.
|
||
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
1. 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.
|
||
|
||
2. 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.
|
||
|
||
3. 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:
|
||
|
||
a. You must cause the modified files to carry prominent notices
|
||
stating that you changed the files and the date of any
|
||
change.
|
||
|
||
b. 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.
|
||
|
||
c. 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.)
|
||
|
||
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.
|
||
|
||
4. 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:
|
||
|
||
a. 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,
|
||
|
||
b. 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,
|
||
|
||
c. 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.)
|
||
|
||
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.
|
||
|
||
5. 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.
|
||
|
||
6. 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.
|
||
|
||
7. 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.
|
||
|
||
8. 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.
|
||
|
||
9. 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.
|
||
|
||
10. 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.
|
||
|
||
11. 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.
|
||
|
||
NO WARRANTY
|
||
|
||
12. 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.
|
||
|
||
13. 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 OF TERMS AND CONDITIONS
|
||
|
||
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.
|
||
|
||
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
|
||
Copyright (C) 19YY 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.
|
||
|
||
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:
|
||
|
||
Gnomovision version 69, Copyright (C) 19YY 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.
|
||
|
||
The hypothetical commands `show w' and `show c' should show the
|
||
appropriate parts of the General Public License. Of course, the
|
||
commands you use may be called something other than `show w' and
|
||
`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:
|
||
|
||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||
|
||
SIGNATURE OF TY COON, 1 April 1989
|
||
Ty Coon, President of Vice
|
||
|
||
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.
|
||
|
||
|
||
File: pcl-cvs, Node: Installation, Next: About pcl-cvs, Prev: Copying, Up: Top
|
||
|
||
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 `pcl-cvs.texinfo' as well as an on-line info file. The
|
||
following steps are also described in the 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.
|
||
|
||
|
||
File: pcl-cvs, Node: Pcl-cvs installation, Next: On-line manual installation, Prev: Installation, Up: Installation
|
||
|
||
Installation of the pcl-cvs program
|
||
===================================
|
||
|
||
1. Edit the file `Makefile' to reflect the situation at your site.
|
||
The only things you have to change is the definition of `lispdir'
|
||
and `infodir'. The elisp files will be copied to `lispdir', and
|
||
the info file to `infodir'.
|
||
|
||
2. 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.
|
||
|
||
*NOTE:* If your system is running emacs 18.57 or earlier you
|
||
MUST uncomment the line that says:
|
||
|
||
(setq delete-exited-processes nil)
|
||
|
||
Setting `delete-exited-processes' to `nil' works around a bug in
|
||
emacs that causes it to dump core. The bug was fixed in emacs
|
||
18.58.
|
||
|
||
3. Release 1.05 and later of pcl-cvs requires parts of the Elib
|
||
library, version 0.07 or later. Elib is available via anonymous
|
||
ftp from prep.ai.mit.edu in `pub/gnu/elib-0.07.tar.z', and from
|
||
a lot of other sites that mirrors prep. Get Elib, and install
|
||
it, before proceeding.
|
||
|
||
4. Type `make install' in the source directory. This will
|
||
byte-compile all `.el' files and copy both the `.el' and the
|
||
`.elc' into the directory you specified in step 1.
|
||
|
||
If you don't want to install the `.el' files but only the `.elc'
|
||
files (the byte-compiled files), you can type ``make
|
||
install_elc'' instead of ``make install''.
|
||
|
||
If you only want to create the compiled elisp files, but don't
|
||
want to install them, you can type `make elcfiles' instead.
|
||
This is what happens if you only type `make' without parameters.
|
||
|
||
5. Edit the file `default.el' in your emacs lisp directory (usually
|
||
`/usr/gnu/emacs/lisp' or something similar) and enter the
|
||
contents of the file `pcl-cvs-startup.el' into it. It contains
|
||
a couple of `auto-load's that facilitates the use of pcl-cvs.
|
||
|
||
|
||
|
||
File: pcl-cvs, Node: On-line manual installation, Next: Typeset manual installation, Prev: Pcl-cvs installation, Up: Installation
|
||
|
||
Installation of the on-line manual.
|
||
===================================
|
||
|
||
1. Create the info file `pcl-cvs' from `pcl-cvs.texinfo' by typing
|
||
`make info'. If you don't have the program `makeinfo' you can
|
||
get it by anonymous ftp from e.g. `ftp.gnu.ai.mit.edu' as
|
||
`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 `pcl-cvs.info' that is included in the distribution
|
||
(type `cp pcl-cvs.info pcl-cvs').
|
||
|
||
2. Move the info file `pcl-cvs' to your standard info directory.
|
||
This might be called something like `/usr/gnu/emacs/info'.
|
||
|
||
3. Edit the file `dir' in the info directory and enter one line to
|
||
contain a pointer to the info file `pcl-cvs'. The line can, for
|
||
instance, look like this:
|
||
|
||
* Pcl-cvs: (pcl-cvs). An Emacs front-end to CVS.
|
||
|
||
|
||
File: pcl-cvs, Node: Typeset manual installation, Prev: On-line manual installation, Up: Installation
|
||
|
||
How to make typeset documentation from pcl-cvs.texinfo
|
||
======================================================
|
||
|
||
If you have TeX installed at your site, you can make a typeset
|
||
manual from `pcl-cvs.texinfo'.
|
||
|
||
1. Run TeX by typing ``make pcl-cvs.dvi''. You will not get the
|
||
indices unless you have the `texindex' program.
|
||
|
||
2. Convert the resulting device independent 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, `dvi2ps', which does.
|
||
There is also a program which comes together with TeX, `dvips',
|
||
which you can use.
|
||
|
||
|
||
|
||
File: pcl-cvs, Node: About pcl-cvs, Next: Getting started, Prev: Installation, Up: Top
|
||
|
||
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?
|
||
|
||
|
||
File: pcl-cvs, Node: Contributors, Next: Archives, Prev: About pcl-cvs, Up: About pcl-cvs
|
||
|
||
Contributors to pcl-cvs
|
||
=======================
|
||
|
||
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 (*note Bugs::.).
|
||
|
||
The following persons have made contributions to pcl-cvs.
|
||
|
||
* Brian Berliner wrote CVS, together with some other contributors.
|
||
Without his work on CVS this package would be useless...
|
||
|
||
* Per Cederqvist wrote most of the otherwise unattributed
|
||
functions in pcl-cvs as well as all documentation.
|
||
|
||
* Inge Wallin (`inge@lysator.liu.se') wrote the skeleton to
|
||
`pcl-cvs.texinfo', and gave useful comments on it. He also wrote
|
||
the files `elib-node.el' and `compile-all.el'. The file
|
||
`cookie.el' was inspired by Inge.
|
||
|
||
* Linus Tolke (`linus@lysator.liu.se') contributed useful comments
|
||
on both the functionality and the documentation.
|
||
|
||
* Jamie Zawinski (`jwz@lucid.com') contributed `pcl-cvs-lucid.el'.
|
||
|
||
* Leif Lonnblad contributed RCVS support.
|
||
|
||
Apart from these, a lot of people have send me suggestions, ideas,
|
||
requests, bug reports and encouragement. Thanks a lot! Without your
|
||
there would be no new releases of pcl-cvs.
|
||
|
||
|
||
File: pcl-cvs, Node: Archives, Prev: Contributors, Up: About pcl-cvs
|
||
|
||
Where can I get pcl-cvs?
|
||
========================
|
||
|
||
The latest release of pcl-cvs can be fetched via anonymous ftp from
|
||
`ftp.lysator.liu.se', (IP no. 130.236.254.1) in the directory
|
||
`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.
|
||
|
||
|
||
File: pcl-cvs, Node: Getting started, Next: Buffer contents, Prev: About pcl-cvs, Up: Top
|
||
|
||
Getting started
|
||
***************
|
||
|
||
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 `M-x cvs-update RET'. If your emacs
|
||
responds with `[No match]' your system administrator has not
|
||
installed pcl-cvs properly. Try `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 `.emacs' file so that you don't have to type the
|
||
`load-library' command every time you wish to use pcl-cvs:
|
||
|
||
(autoload 'cvs-update "pcl-cvs" nil t)
|
||
|
||
The function `cvs-update' will ask for a directory. The command
|
||
`cvs update' will be run in that directory. (It should contain files
|
||
that have been checked out from a CVS archive.) The output from
|
||
`cvs' will be parsed and presented in a table in a buffer called
|
||
`*cvs*'. It might look something like this:
|
||
|
||
PCL-CVS release 1.05.
|
||
|
||
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 -----
|
||
|
||
In this example the three files (`bar', `file.txt' and `newer')
|
||
that are marked with `Updated' have been copied from the CVS
|
||
repository to `/users/ceder/FOO/test/' since someone else have
|
||
checked in newer versions of them. Two files (`namechange' and
|
||
`sub/ChangeLog') have been modified locally, and needs to be checked
|
||
in.
|
||
|
||
You can move the cursor up and down in the buffer with `C-n' and
|
||
`C-p' or `n' and `p'. If you press `c' on one of the `Modified'
|
||
files that file will be checked in to the CVS repository. *Note
|
||
Committing changes::. You can press `x' to get rid of the
|
||
"uninteresting" files that have only been `Updated' (and don't
|
||
require any further action from you).
|
||
|
||
You can also easily get a `diff' between your modified file and the
|
||
base version that you started from, and you can get the output from
|
||
`cvs log' and `cvs status' on the listed files simply by pressing a
|
||
key (*note Getting info about files::.).
|
||
|
||
|
||
File: pcl-cvs, Node: Buffer contents, Next: Commands, Prev: Getting started, Up: Top
|
||
|
||
Buffer contents
|
||
***************
|
||
|
||
The display contains four columns. They contain, from left to
|
||
right:
|
||
|
||
* An asterisk when the file is "marked" (*note Selected files::.).
|
||
|
||
* The status of the file. See *Note File status::, for more
|
||
information.
|
||
|
||
* A "need to be checked in"-marker (`ci').
|
||
|
||
* The file name.
|
||
|
||
* Menu:
|
||
|
||
* File status:: The meaning of the second field.
|
||
* Selected files:: How selection works.
|
||
|
||
|
||
File: pcl-cvs, Node: File status, Next: Selected files, Prev: Buffer contents, Up: Buffer contents
|
||
|
||
File status
|
||
===========
|
||
|
||
The `file status' field can have the following values:
|
||
|
||
`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.
|
||
|
||
`Modified'
|
||
The file is modified in your working directory, and there was
|
||
no modification to the same file in the repository.
|
||
|
||
`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.
|
||
|
||
`Conflict'
|
||
A conflict was detected while trying to merge your changes to
|
||
FILE with changes from the source repository. FILE (the copy in
|
||
your working directory) is now the output of the `rcsmerge'
|
||
command on the two versions; an unmodified copy of your file is
|
||
also in your working directory, with the name `.#FILE.VERSION',
|
||
where VERSION is the RCS revision that your modified file started
|
||
from. *Note Viewing differences::, for more details.
|
||
|
||
`Added'
|
||
The file has been added by you, but it still needs to be checked
|
||
in to the repository.
|
||
|
||
`Removed'
|
||
The file has been removed by you, but it needs to be checked in
|
||
to the repository. You can resurrect it by typing `a' (*note
|
||
Adding and removing files::.).
|
||
|
||
`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.
|
||
|
||
There are also a few special cases, that rarely occur, which have
|
||
longer strings in the fields:
|
||
|
||
`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.
|
||
|
||
`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 *note Adding and removing files::.).
|
||
|
||
`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 `a' to
|
||
resurrect the file (see *note Adding and removing files::.).
|
||
|
||
`Move away FILE - it is in the way'
|
||
For some reason CVS does not like the file FILE. Rename or
|
||
remove it.
|
||
|
||
`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.
|
||
|
||
|
||
File: pcl-cvs, Node: Selected files, Prev: File status, Up: Buffer contents
|
||
|
||
Selected files
|
||
==============
|
||
|
||
Many of the commands works on the current set of "selected" files.
|
||
|
||
* If there are any files that are marked they constitute the set of
|
||
selected files.
|
||
|
||
* Otherwise, if the cursor points to a file, that file is the
|
||
selected file.
|
||
|
||
* Otherwise, if the cursor points to a directory, all the files in
|
||
that directory that appears in the buffer are the selected files.
|
||
|
||
This scheme might seem a little complicated, but once one get used
|
||
to it, it is quite powerful.
|
||
|
||
*Note Marking files:: tells how you mark and unmark files.
|
||
|
||
|
||
File: pcl-cvs, Node: Commands, Next: Customization, Prev: Buffer contents, Up: Top
|
||
|
||
Commands
|
||
********
|
||
|
||
The nodes in this menu contains explanations about all the
|
||
commands that you can use in pcl-cvs. They are grouped together by
|
||
type.
|
||
|
||
* 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
|
||
* Undoing changes:: Undoing changes
|
||
* Removing handled entries:: Uninteresting lines can easily be removed.
|
||
* Ignoring files:: Telling CVS to ignore generated files.
|
||
* Viewing differences:: Commands to `diff' different versions.
|
||
* Emerge::
|
||
* Reverting your buffers:: Reverting your buffers
|
||
* Miscellaneous commands:: Miscellaneous commands
|
||
|
||
|
||
File: pcl-cvs, Node: Updating the directory, Next: Movement commands, Prev: Commands, Up: Commands
|
||
|
||
Updating the directory
|
||
======================
|
||
|
||
`M-x cvs-update'
|
||
Run a `cvs update' command. You will be asked for the directory
|
||
in which the `cvs update' will be run. The output will be
|
||
parsed by pcl-cvs, and the result printed in the `*cvs*' buffer
|
||
(see *note Buffer contents::. for a description of the contents).
|
||
|
||
By default, `cvs-update' will descend recursively into
|
||
subdirectories. You can avoid that behavior by giving a prefix
|
||
argument to it (e.g., by typing `C-u M-x cvs-update RET').
|
||
|
||
All other commands in pcl-cvs requires that you have a `*cvs*'
|
||
buffer. This is the command that you use to get one.
|
||
|
||
CVS uses lock files in the repository to ensure the integrity of
|
||
the data files in the repository. They might be left behind
|
||
i.e. if a workstation crashes in the middle of a CVS operation.
|
||
CVS outputs a message when it is waiting for a lock file to go
|
||
away. Pcl-cvs will show the same message in the *cvs* buffer,
|
||
together with instructions for deleting the lock files. You
|
||
should normally not have to delete them manually -- just wait a
|
||
little while and the problem should fix itself. But if the lock
|
||
files doesn't disappear you can delete them with `M-x
|
||
cvs-delete-lock RET'.
|
||
|
||
`g'
|
||
This will run `cvs update' again. It will always use the same
|
||
buffer that was used with the previous `cvs update'. Give a
|
||
prefix argument to avoid descending into subdirectories. This
|
||
runs the command `cvs-mode-update-no-prompt'.
|
||
|
||
|
||
File: pcl-cvs, Node: Movement commands, Next: Marking files, Prev: Updating the directory, Up: Commands
|
||
|
||
Movement Commands
|
||
=================
|
||
|
||
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:
|
||
|
||
`SPC'
|
||
`C-n'
|
||
`n'
|
||
These keys move the cursor one file forward, towards the end of
|
||
the buffer (`cookie-next-cookie').
|
||
|
||
`C-p'
|
||
`p'
|
||
These keys move one file backward, towards the beginning of the
|
||
buffer (`cookie-previous-cookie').
|
||
|
||
|
||
File: pcl-cvs, Node: Marking files, Next: Committing changes, Prev: Movement commands, Up: Commands
|
||
|
||
Marking files
|
||
=============
|
||
|
||
Pcl-cvs works on a set of "selected files" (*note Selected
|
||
files::.). You can mark and unmark files with these commands:
|
||
|
||
`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. (`cvs-mode-mark').
|
||
|
||
`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.
|
||
(`cvs-mode-unmark').
|
||
|
||
`M'
|
||
Mark *all* files in the buffer (`cvs-mode-mark-all-files').
|
||
|
||
`ESC DEL'
|
||
Unmark *all* files (`cvs-mode-unmark-all-files').
|
||
|
||
`DEL'
|
||
Unmark the file on the previous line, and move point to that line
|
||
(`cvs-mode-unmark-up').
|
||
|
||
|
||
File: pcl-cvs, Node: Committing changes, Next: Editing files, Prev: Marking files, Up: Commands
|
||
|
||
Committing changes
|
||
==================
|
||
|
||
`c'
|
||
All files that have a "need to be checked in"-marker (*note
|
||
Buffer contents::.) can be checked in with the `c' command. It
|
||
checks in all selected files (*note Selected files::.) (except
|
||
those who lack the "ci"-marker - they are ignored). Pressing
|
||
`c' causes `cvs-mode-commit' to be run.
|
||
|
||
When you press `c' you will get a buffer called
|
||
`*cvs-commit-message*'. Enter the log message for the file(s) in
|
||
it. When you are ready you should press `C-c C-c' to actually
|
||
commit the files (using `cvs-edit-done').
|
||
|
||
Normally the `*cvs-commit-message*' buffer will retain the log
|
||
message from the previous commit, but if the variable
|
||
`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 `C-w'
|
||
(`kill-region').
|
||
|
||
If you are editing the files in your emacs an automatic
|
||
`revert-buffer' will be performed. (If the file contains `$Id$'
|
||
keywords `cvs commit' will write a new file with the new values
|
||
substituted. The auto-revert makes sure that you get them into
|
||
your buffer). The revert will not occur if you have modified
|
||
your buffer, or if `cvs-auto-revert-after-commit' is set to
|
||
`nil'.
|
||
|
||
|
||
File: pcl-cvs, Node: Editing files, Next: Getting info about files, Prev: Committing changes, Up: Commands
|
||
|
||
Editing files
|
||
=============
|
||
|
||
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.
|
||
|
||
`f'
|
||
Find the file that the cursor points to. Run `dired' (*note
|
||
Dired: (Emacs)Dired.) if the cursor points to a directory
|
||
(`cvs-mode-find-file').
|
||
|
||
`o'
|
||
Like `f', but use another window
|
||
(`cvs-mode-find-file-other-window').
|
||
|
||
`A'
|
||
Invoke `add-change-log-entry-other-window' to edit a `ChangeLog'
|
||
file. The `ChangeLog' will be found in the directory of the
|
||
file the cursor points to.
|
||
(`cvs-mode-add-change-log-entry-other-window').
|
||
|
||
|
||
File: pcl-cvs, Node: Getting info about files, Next: Adding and removing files, Prev: Editing files, Up: Commands
|
||
|
||
Getting info about files
|
||
========================
|
||
|
||
Both of the following commands can be customized. *Note
|
||
Customization::.
|
||
|
||
`l'
|
||
Run `cvs log' on all selected files, and show the result in a
|
||
temporary buffer (`cvs-mode-log').
|
||
|
||
`s'
|
||
Run `cvs status' on all selected files, and show the result in a
|
||
temporary buffer (`cvs-mode-status').
|
||
|
||
|
||
File: pcl-cvs, Node: Adding and removing files, Next: Undoing changes, Prev: Getting info about files, Up: Commands
|
||
|
||
Adding and removing files
|
||
=========================
|
||
|
||
The following commands are available to make it easy to add and
|
||
remove files from the CVS repository.
|
||
|
||
`a'
|
||
Add all selected files. This command can be used on `Unknown'
|
||
files (see *note File status::.). The status of the file will
|
||
change to `Added', and you will have to use `c'
|
||
(`cvs-mode-commit', see *note Committing changes::.) to really
|
||
add the file to the repository.
|
||
|
||
This command can also be used on `Removed' files (before you
|
||
commit them) to resurrect them.
|
||
|
||
Selected files that are neither `Unknown' nor `Removed' will be
|
||
ignored by this command.
|
||
|
||
The command that is run is `cvs-mode-add'.
|
||
|
||
`r'
|
||
This command removes the selected files (after prompting for
|
||
confirmation). The files are `rm'ed from your directory and
|
||
(unless the status was `Unknown'; *note File status::.) they will
|
||
also be `cvs remove'd. If the files were `Unknown' they will
|
||
disappear from the buffer. Otherwise their status will change to
|
||
`Removed', and you must use `c' (`cvs-mode-commit', *note
|
||
Committing changes::.) to commit the removal.
|
||
|
||
The command that is run is `cvs-mode-remove-file'.
|
||
|
||
|
||
File: pcl-cvs, Node: Undoing changes, Next: Removing handled entries, Prev: Adding and removing files, Up: Commands
|
||
|
||
Undoing changes
|
||
===============
|
||
|
||
`U'
|
||
If you have modified a file, and for some reason decide that you
|
||
don't want to keep the changes, you can undo them with this
|
||
command. It works by removing your working copy of the file and
|
||
then getting the latest version from the repository
|
||
(`cvs-mode-undo-local-changes'.
|
||
|
||
|
||
File: pcl-cvs, Node: Removing handled entries, Next: Ignoring files, Prev: Undoing changes, Up: Commands
|
||
|
||
Removing handled entries
|
||
========================
|
||
|
||
`x'
|
||
This command allows you to remove all entries that you have
|
||
processed. More specifically, the lines for `Updated' files
|
||
(*note File status::. and files that have been checked in (*note
|
||
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 `cvs-mode-remove-handled'. If
|
||
`cvs-auto-remove-handled' is set to non-`nil' this will
|
||
automatically be performed after every commit.
|
||
|
||
`C-k'
|
||
This command can be used for lines that
|
||
`cvs-mode-remove-handled' would not delete, but that you want to
|
||
delete (`cvs-mode-acknowledge').
|
||
|
||
|
||
File: pcl-cvs, Node: Ignoring files, Next: Viewing differences, Prev: Removing handled entries, Up: Commands
|
||
|
||
Ignoring files
|
||
==============
|
||
|
||
`i'
|
||
Arrange so that CVS will ignore the selected files. The file
|
||
names are added to the `.cvsignore' file in the corresponding
|
||
directory. If the `.cvsignore' doesn't exist it will be created.
|
||
|
||
The `.cvsignore' file should normally be added to the repository,
|
||
but you could ignore it also if you like it better that way.
|
||
|
||
This runs `cvs-mode-ignore'.
|
||
|
||
|
||
File: pcl-cvs, Node: Viewing differences, Next: Emerge, Prev: Ignoring files, Up: Commands
|
||
|
||
Viewing differences
|
||
===================
|
||
|
||
`d'
|
||
Display a `cvs diff' between the selected files and the RCS
|
||
version that they are based on. *Note Customization:: describes
|
||
how you can send flags to `cvs diff'. If CVS-DIFF-IGNORE-MARKS
|
||
is set to a non-`nil' value or if a prefix argument is given
|
||
(but not both) any marked files will not be considered to be
|
||
selected. (`cvs-mode-diff-cvs').
|
||
|
||
`b'
|
||
If CVS finds a conflict while merging two versions of a file
|
||
(during a `cvs update', *note Updating the directory::.) it will
|
||
save the original file in a file called `.#FILE.VERSION' where
|
||
FILE is the name of the file, and VERSION is the RCS version
|
||
number that your file was based on.
|
||
|
||
With the `b' command you can run a `diff' on the files
|
||
`.#FILE.VERSION' and `FILE'. You can get a context- or Unidiff
|
||
by setting `cvs-diff-flags' - *note Customization::.. This
|
||
command only works on files that have status `Conflict' or
|
||
`Merged'.
|
||
|
||
If CVS-DIFF-IGNORE-MARKS is set to a non-`nil' value or if a
|
||
prefix argument is given (but not both) any marked files will
|
||
not be considered to be selected. (`cvs-mode-diff-backup').
|
||
|
||
|
||
File: pcl-cvs, Node: Emerge, Next: Reverting your buffers, Prev: Viewing differences, Up: Commands
|
||
|
||
Running emerge
|
||
==============
|
||
|
||
`e'
|
||
Invoke `emerge' on one file. This command works slightly
|
||
different depending on the file status.
|
||
|
||
`Modified'
|
||
Run `emerge-files' with your working file as file A, and
|
||
the latest revision in the repository as file B.
|
||
|
||
`Merged'
|
||
`Conflict'
|
||
Run `emerge-files-with-ancestor' with your working file (as
|
||
it was prior to your invocation of `cvs-update') as file A,
|
||
the latest revision in the repository as file B, and the
|
||
revision that you based your local modifications on as
|
||
ancestor.
|
||
|
||
*Note:* CVS has already performed a merge. The resulting file is
|
||
not used in any way if you use this command. If you use the `q'
|
||
command inside `emerge' (to successfully terminate the merge) the
|
||
file that CVS created will be overwritten.
|
||
|
||
|
||
File: pcl-cvs, Node: Reverting your buffers, Next: Miscellaneous commands, Prev: Emerge, Up: Commands
|
||
|
||
Reverting your buffers
|
||
======================
|
||
|
||
`R'
|
||
If you are editing (or just viewing) a file in a buffer, and
|
||
that file is changed by CVS during a `cvs-update', all you have
|
||
to do is type `R' in the *cvs* buffer to read in the new
|
||
versions of the files.
|
||
|
||
All files that are `Updated', `Merged' or in `Conflict' are
|
||
reverted from the disk. Any other files are ignored. Only files
|
||
that you were already editing are read.
|
||
|
||
An error is signalled if you have modified the buffer since it
|
||
was last changed. (`cvs-mode-revert-updated-buffers').
|
||
|
||
|
||
File: pcl-cvs, Node: Miscellaneous commands, Prev: Reverting your buffers, Up: Commands
|
||
|
||
Miscellaneous commands
|
||
======================
|
||
|
||
`M-x cvs-byte-compile-files'
|
||
Byte compile all selected files that end in .el.
|
||
|
||
`M-x cvs-delete-lock'
|
||
This command can be used in any buffer, and deletes the lock
|
||
files that the *cvs* buffer informs you about. You should
|
||
normally never have to use this command since CVS tries very
|
||
carefully to always remove the lock files itself.
|
||
|
||
You can only use this command when a message in the *cvs* buffer
|
||
tells you so. You should wait a while before using this command
|
||
in case someone else is running a cvs command.
|
||
|
||
`q'
|
||
Bury the *cvs* buffer. (`bury-buffer').
|
||
|
||
|
||
File: pcl-cvs, Node: Customization, Next: Future enhancements, Prev: Commands, Up: Top
|
||
|
||
Customization
|
||
*************
|
||
|
||
If you have an idea about any customization that would be handy but
|
||
isn't present in this list, please tell me! *Note Bugs:: for info on
|
||
how to reach me.
|
||
|
||
`cvs-erase-input-buffer'
|
||
If set to anything else than `nil' the edit buffer will be erased
|
||
before you write the log message (*note Committing changes::.).
|
||
|
||
`cvs-inhibit-copyright-message'
|
||
The copyright message that is displayed on startup can be
|
||
annoying after a while. Set this variable to `t' if you want to
|
||
get rid of it. (But don't set this to `t' in the system defaults
|
||
file - new users should see this message at least once).
|
||
|
||
`cvs-diff-flags'
|
||
A list of strings to pass as arguments to the `cvs diff' and
|
||
`diff' programs. This is used by `cvs-mode-diff-cvs' and
|
||
`cvs-mode-diff-backup' (key `b', *note Viewing differences::.).
|
||
If you prefer the Unidiff format you could add this line to your
|
||
`.emacs' file:
|
||
|
||
(setq cvs-diff-flags '("-u"))
|
||
|
||
`cvs-diff-ignore-marks'
|
||
If this variable is non-`nil' or if a prefix argument is given
|
||
(but not both) to `cvs-mode-diff-cvs' or `cvs-mode-diff-backup'
|
||
marked files are not considered selected.
|
||
|
||
`cvs-log-flags'
|
||
List of strings to send to `cvs log'. Used by `cvs-mode-log'
|
||
(key `l', *note Getting info about files::.).
|
||
|
||
`cvs-status-flags'
|
||
List of strings to send to `cvs status'. Used by
|
||
`cvs-mode-status' (key `s', *note Getting info about files::.).
|
||
|
||
`cvs-auto-remove-handled'
|
||
If this variable is set to any non-`nil' value
|
||
`cvs-mode-remove-handled' will be called every time you check in
|
||
files, after the check-in is ready. *Note Removing handled
|
||
entries::.
|
||
|
||
`cvs-auto-revert-after-commit'
|
||
If this variable is set to any non-`nil' value any buffers you
|
||
have that visit a file that is committed will be automatically
|
||
reverted. This variable is default `t'. *Note Committing
|
||
changes::.
|
||
|
||
`cvs-update-prog-output-skip-regexp'
|
||
The `-u' flag in the `modules' file can be used to run a command
|
||
whenever a `cvs update' is performed (see cvs(5)). This regexp
|
||
is used to search for the last line in that output. It is
|
||
normally set to `"$"'. That setting is only correct if the
|
||
command outputs nothing. Note that pcl-cvs will get very
|
||
confused if the command outputs *anything* to `stderr'.
|
||
|
||
`cvs-cvsroot'
|
||
This variable can be set to override `CVSROOT'. It should be a
|
||
string. If it is set then everytime a cvs command is run it will
|
||
be called as `cvs -d CVS-CVSROOT...' This can be useful if your
|
||
site has several repositories.
|
||
|
||
`TMPDIR'
|
||
Pcl-cvs uses this *environment variable* to decide where to put
|
||
the temporary files it needs. It defaults to `/tmp' if it is
|
||
not set.
|
||
|
||
`cvs-commit-buffer-require-final-newline'
|
||
When you enter a log message in the `*cvs-commit-message*' buffer
|
||
pcl-cvs will normally automatically insert a trailing newline,
|
||
unless there already is one. This behavior can be controlled via
|
||
`cvs-commit-buffer-require-final-newline'. If it is `t' (the
|
||
default behavior), a newline will always be appended. If it is
|
||
`nil', newlines will never be appended. Any other value causes
|
||
pcl-cvs to ask the user whenever there is no trailing newline in
|
||
the commit message buffer.
|
||
|
||
`cvs-sort-ignore-file'
|
||
If this variable is set to any non-`nil' value the `.cvsignore'
|
||
will always be sorted whenever you use `cvs-mode-ignore' to add
|
||
a file to it. This option is on by default.
|
||
|
||
|
||
File: pcl-cvs, Node: Future enhancements, Next: Bugs, Prev: Customization, Up: Top
|
||
|
||
Future enhancements
|
||
*******************
|
||
|
||
Pcl-cvs is still under development and needs a number of
|
||
enhancements to be called complete. Below is my current wish-list
|
||
for future releases of pcl-cvs. Please, let me know which of these
|
||
features you want most. They are listed below in approximately the
|
||
order that I currently think I will implement them in.
|
||
|
||
* Rewritten parser code. There are many situations where pcl-cvs
|
||
will fail to recognize the output from CVS. The situation could
|
||
be greatly increased.
|
||
|
||
* `cvs-status'. This will run `cvs status' in a directory and
|
||
produce a buffer that looks pretty much like the current *cvs*
|
||
buffer. That buffer will include information for all
|
||
version-controlled files. (There will be a simple keystroke to
|
||
remove all "uninteresting" files, that is, files that are
|
||
"Up-to-date"). In this new buffer you will be able to update a
|
||
file, commit a file, et c. The big win with this is that you
|
||
will be able to watch the differences between your current
|
||
working file and the head revision in the repository before you
|
||
update the file, and you can then choose to update it or let it
|
||
wait for a while longer.
|
||
|
||
* Log mode. When this mode is finished you will be able to move
|
||
around (using `n' and `p') between the revisions of a file, mark
|
||
two of them, and run a diff between them. You will be able to
|
||
hide branches (similar to the way you can hide sub-paragraphs in
|
||
outline-mode) and do merges between revisions. Other ideas
|
||
about this are welcome.
|
||
|
||
* The current model for marks in the *cvs* buffer seems to be
|
||
confusing. I am considering to use the VM model instead, where
|
||
marks are normally inactive. To activate the mark, you issue a
|
||
command like `cvs-mode-next-command-uses-marks'. I might
|
||
implement a flag so that you can use either version. Feedback
|
||
on this before I start coding it is very welcome.
|
||
|
||
* It should be possible to run commands such as `cvs log', `cvs
|
||
status' and `cvs commit' directly from a buffer containing a
|
||
file, instead of having to `cvs-update'. If the directory
|
||
contains many files the `cvs-update' can take quite some time,
|
||
especially on a slow machine. I planed to put these kind of
|
||
commands on the prefix `C-c C-v', but that turned out to be used
|
||
by for instance c++-mode. If you have any suggestions for a
|
||
better prefix key, please let me know.
|
||
|
||
* Increased robustness. For instance, you can not currently press
|
||
`C-g' when you are entering the description of a file that you
|
||
are adding without confusing pcl-cvs.
|
||
|
||
* Support for multiple active *cvs* buffers.
|
||
|
||
* Dired support. I have an experimental `dired-cvs.el' that works
|
||
together with CVS 1.2. Unfortunately I wrote it on top of a
|
||
non-standard `dired.el', so it must be rewritten.
|
||
|
||
* An ability to send user-supplied options to all the cvs commands.
|
||
|
||
* Pcl-cvs is not at all clever about what it should do when `cvs
|
||
update' runs a program (due to the `-u' option in the `modules'
|
||
file -- see `cvs(5)'). The current release uses a regexp to
|
||
search for the end. At the very least that regexp should be
|
||
configured for different modules. Tell me if you have any idea
|
||
about what is the right thing to do. In a perfect world the
|
||
program should also be allowed to print to `stderr' without
|
||
causing pcl-cvs to crash.
|
||
|
||
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 *Note
|
||
Bugs:: for information about how to reach me.
|
||
|
||
So far, I have written most of pcl-cvs in my all-to-rare spare
|
||
time. If you want pcl-cvs to be developed faster you can write a
|
||
contract with Signum Support to do the extension. You can reach
|
||
Signum Support by email to `info@signum.se' or via mail to Signum
|
||
Support AB, Box 2044, S-580 02 Linkoping, Sweden. Phone: +46 (0) 13 -
|
||
21 46 00. Fax: +46 (0) 13 - 21 47 00.
|
||
|
||
|
||
File: pcl-cvs, Node: Bugs, Next: Function and Variable Index, Prev: Future enhancements, Up: Top
|
||
|
||
Bugs (known and unknown)
|
||
************************
|
||
|
||
If you find a bug or misfeature, don't hesitate to tell me! Send
|
||
email to `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!
|
||
|
||
Below is a partial list of currently known problems with pcl-cvs
|
||
version 1.05.
|
||
|
||
Commit causes Emacs to hang
|
||
Emacs waits for the `cvs commit' command to finish before you can
|
||
do anything. If you start a background job from the loginfo
|
||
file you must take care that it closes `stdout' and `stderr' if
|
||
you do not want to wait for it. (You do that with
|
||
`background-command &>- 2&>- &' if you are starting
|
||
`background-command' from a `/bin/sh' shell script).
|
||
|
||
Your emacs will also hang if there was a lock file in the
|
||
repository. In this case you can type `C-g' to get control over
|
||
your emacs again.
|
||
|
||
Name clash in Emacs 19
|
||
This is really a bug in Elib or the Emacs 19 distribution. Both
|
||
Elib and Emacs 19.6 through at least 19.10 contains a file named
|
||
`cookie.el'. One of the files will have to be renamed, and we
|
||
are currently negotiating about which of the files to rename.
|
||
|
||
Commands while cvs-update is running
|
||
It is possible to type commands in the *cvs* buffer while the
|
||
update is running, but error messages is all that you will get.
|
||
The error messages should be better.
|
||
|
||
Unexpected output from CVS
|
||
Unexpected output from CVS confuses pcl-cvs. It will currently
|
||
create a bug report that you can mail to me. It should do
|
||
something more civilized.
|
||
|
||
|
||
File: pcl-cvs, Node: Function and Variable Index, Next: Concept Index, Prev: Bugs, Up: Top
|
||
|
||
Function and Variable Index
|
||
***************************
|
||
|
||
* Menu:
|
||
|
||
* bury-buffer: Miscellaneous commands.
|
||
* cookie-next-cookie: Movement commands.
|
||
* cookie-previous-cookie: Movement commands.
|
||
* cvs-auto-remove-handled (variable): Customization.
|
||
* cvs-auto-revert-after-commit (variable): Customization.
|
||
* cvs-auto-revert-after-commit (variable): Committing changes.
|
||
* cvs-byte-compile-files: Miscellaneous commands.
|
||
* cvs-commit-buffer-require-final-newline (variable): Customization.
|
||
* cvs-cvsroot (variable): Customization.
|
||
* cvs-delete-lock: Updating the directory.
|
||
* cvs-diff-flags (variable): Customization.
|
||
* cvs-diff-ignore-marks (variable): Customization.
|
||
* cvs-diff-ignore-marks (variable): Viewing differences.
|
||
* cvs-erase-input-buffer (variable): Customization.
|
||
* cvs-erase-input-buffer (variable): Committing changes.
|
||
* cvs-inhibit-copyright-message (variable): Customization.
|
||
* cvs-log-flags (variable): Customization.
|
||
* cvs-mode-acknowledge: Removing handled entries.
|
||
* cvs-mode-add: Adding and removing files.
|
||
* cvs-mode-add-change-log-entry-other-window: Editing files.
|
||
* cvs-mode-commit: Committing changes.
|
||
* cvs-mode-diff-backup: Viewing differences.
|
||
* cvs-mode-diff-cvs: Viewing differences.
|
||
* cvs-mode-emerge: Emerge.
|
||
* cvs-mode-find-file: Editing files.
|
||
* cvs-mode-find-file-other-window: Editing files.
|
||
* cvs-mode-ignore: Removing handled entries.
|
||
* cvs-mode-log: Getting info about files.
|
||
* cvs-mode-mark: Marking files.
|
||
* cvs-mode-mark-all-files: Marking files.
|
||
* cvs-mode-remove-file: Adding and removing files.
|
||
* cvs-mode-remove-handled: Removing handled entries.
|
||
* cvs-mode-revert-updated-buffers: Reverting your buffers.
|
||
* cvs-mode-status: Getting info about files.
|
||
* cvs-mode-undo-local-changes: Undoing changes.
|
||
* cvs-mode-unmark: Marking files.
|
||
* cvs-mode-unmark-all-files: Marking files.
|
||
* cvs-mode-unmark-up: Marking files.
|
||
* cvs-mode-update-no-prompt: Updating the directory.
|
||
* cvs-sort-ignore-file (variable): Customization.
|
||
* cvs-status-flags (variable): Customization.
|
||
* cvs-update: Updating the directory.
|
||
* cvs-update-prog-output-skip-regexp (variable): Customization.
|
||
* TMPDIR (environment variable): Customization.
|
||
|
||
|
||
File: pcl-cvs, Node: Concept Index, Next: Key Index, Prev: Function and Variable Index, Up: Top
|
||
|
||
Concept Index
|
||
*************
|
||
|
||
* Menu:
|
||
|
||
* -u option in modules file: Customization.
|
||
* .cvsignore file, sorting: Customization.
|
||
* About pcl-cvs: About pcl-cvs.
|
||
* Active files: Selected files.
|
||
* Added (file status): File status.
|
||
* Adding files: Adding and removing files.
|
||
* Archives: Archives.
|
||
* Author, how to reach: Bugs.
|
||
* Authors: Contributors.
|
||
* Automatically inserting newline: Customization.
|
||
* Automatically remove handled files: Customization.
|
||
* Automatically sorting .cvsignore: Customization.
|
||
* Buffer contents: Buffer contents.
|
||
* Bugs, how to report them: Bugs.
|
||
* Bugs, known: Bugs.
|
||
* Byte compilation: Miscellaneous commands.
|
||
* Ci: Committing changes.
|
||
* Commit buffer: Committing changes.
|
||
* Commit message, inserting newline: Customization.
|
||
* Committing changes: Committing changes.
|
||
* Conflict (file status): File status.
|
||
* Conflicts, how to resolve them: Viewing differences.
|
||
* Conflicts, resolving: Emerge.
|
||
* Context diff, how to get: Customization.
|
||
* Contributors: Contributors.
|
||
* Copyright message, getting rid of it: Customization.
|
||
* Customization: Customization.
|
||
* Deleting files: Adding and removing files.
|
||
* Diff: Viewing differences.
|
||
* Dired: Editing files.
|
||
* Edit buffer: Committing changes.
|
||
* Editing files: Editing files.
|
||
* Email archives: Archives.
|
||
* Email to the author: Bugs.
|
||
* Emerge: Emerge.
|
||
* Enhancements: Future enhancements.
|
||
* Erasing commit message: Committing changes.
|
||
* Erasing the input buffer: Customization.
|
||
* Example run: Getting started.
|
||
* Expunging uninteresting entries: Removing handled entries.
|
||
* FAQ: Bugs.
|
||
* File selection: Selected files.
|
||
* File status: File status.
|
||
* Finding files: Editing files.
|
||
* Flush changes: Undoing changes.
|
||
* Ftp-sites: Archives.
|
||
* Generating a typeset manual: Typeset manual installation.
|
||
* Generating the on-line manual: On-line manual installation.
|
||
* Getting pcl-cvs: Archives.
|
||
* Getting rid of lock files: Miscellaneous commands.
|
||
* Getting rid of the Copyright message.: Customization.
|
||
* Getting rid of uninteresting lines: Removing handled entries.
|
||
* Getting status: Getting info about files.
|
||
* Getting the *cvs* buffer: Updating the directory.
|
||
* Handled lines, removing them: Removing handled entries.
|
||
* Info-file (how to generate): On-line manual installation.
|
||
* Inhibiting the Copyright message.: Customization.
|
||
* Installation: Installation.
|
||
* Installation of elisp files: Pcl-cvs installation.
|
||
* Installation of on-line manual: On-line manual installation.
|
||
* Installation of typeset manual: Typeset manual installation.
|
||
* Introduction: Getting started.
|
||
* Invoking dired: Editing files.
|
||
* Invoking emerge: Emerge.
|
||
* Known bugs: Bugs.
|
||
* Loading files: Editing files.
|
||
* Lock files: Miscellaneous commands.
|
||
* Log (RCS/cvs command): Getting info about files.
|
||
* Manual installation (on-line): On-line manual installation.
|
||
* Manual installation (typeset): Typeset manual installation.
|
||
* Marked files: Selected files.
|
||
* Marking files: Marking files.
|
||
* Merged (file status): File status.
|
||
* Modified (file status): File status.
|
||
* Modules file (-u option): Customization.
|
||
* Move away FILE - it is in the way (file status): File status.
|
||
* Movement Commands: Movement commands.
|
||
* On-line manual (how to generate): On-line manual installation.
|
||
* Printing a manual: Typeset manual installation.
|
||
* Problems, list of common: Bugs.
|
||
* Putting files under CVS control: Adding and removing files.
|
||
* Recompiling elisp files: Miscellaneous commands.
|
||
* Removed (file status): File status.
|
||
* Removed by you, changed in repository (file status): File status.
|
||
* Removed from repository (file status): File status.
|
||
* Removed from repository, changed by you (file status): File status.
|
||
* Removing files: Adding and removing files.
|
||
* Removing uninteresting (processed) lines: Removing handled entries.
|
||
* Reporting bugs and ideas: Bugs.
|
||
* Require final newline: Customization.
|
||
* Resolving conflicts: Emerge.
|
||
* Resurrecting files: Adding and removing files.
|
||
* Reverting buffers: Reverting your buffers.
|
||
* Reverting buffers after commit: Committing changes.
|
||
* Reverting buffers after commit: Customization.
|
||
* Selected files: Selected files.
|
||
* Selecting files (commands to mark files): Marking files.
|
||
* Sites: Archives.
|
||
* Sorting the .cvsignore file: Customization.
|
||
* Status (cvs command): Getting info about files.
|
||
* Syncing buffers: Reverting your buffers.
|
||
* TeX - generating a typeset manual: Typeset manual installation.
|
||
* This repository is missing!... (file status): File status.
|
||
* Undo changes: Undoing changes.
|
||
* Unidiff, how to get: Customization.
|
||
* Uninteresting entries, getting rid of them: Removing handled entries.
|
||
* Unknown (file status): File status.
|
||
* Update program (-u option in modules file): Customization.
|
||
* Updated (file status): File status.
|
||
* Variables, list of all: Customization.
|
||
* Viewing differences: Viewing differences.
|
||
|
||
|
||
File: pcl-cvs, Node: Key Index, Prev: Concept Index, Up: Top
|
||
|
||
Key Index
|
||
*********
|
||
|
||
* Menu:
|
||
|
||
* a - add a file: Adding and removing files.
|
||
* A - add ChangeLog entry: Editing files.
|
||
* b - diff backup file: Viewing differences.
|
||
* c - commit files: Committing changes.
|
||
* C-k - remove selected entries: Removing handled entries.
|
||
* C-n - Move down one file: Movement commands.
|
||
* C-p - Move up one file: Movement commands.
|
||
* d - run cvs diff: Viewing differences.
|
||
* DEL - unmark previous file: Marking files.
|
||
* e - invoke emerge: Emerge.
|
||
* ESC DEL - unmark all files: Marking files.
|
||
* f - find file or directory: Editing files.
|
||
* g - Rerun cvs update: Updating the directory.
|
||
* l - run cvs log: Getting info about files.
|
||
* m - marking a file: Marking files.
|
||
* M - marking all files: Marking files.
|
||
* n - Move down one file: Movement commands.
|
||
* o - find file in other window: Editing files.
|
||
* p - Move up on file: Movement commands.
|
||
* q - bury the *cvs* buffer: Miscellaneous commands.
|
||
* r - remove a file: Adding and removing files.
|
||
* R - revert buffers: Reverting your buffers.
|
||
* s - run cvs status: Getting info about files.
|
||
* SPC - Move down one file: Movement commands.
|
||
* U - undo changes: Undoing changes.
|
||
* u - unmark a file: Marking files.
|
||
* x - remove processed entries: Removing handled entries.
|
||
|
||
|
||
|
||
Tag Table:
|
||
Node: Top1007
|
||
Node: Copying3571
|
||
Node: Installation22803
|
||
Node: Pcl-cvs installation23593
|
||
Node: On-line manual installation25654
|
||
Node: Typeset manual installation26672
|
||
Node: About pcl-cvs27411
|
||
Node: Contributors27780
|
||
Node: Archives29083
|
||
Node: Getting started29662
|
||
Node: Buffer contents32105
|
||
Node: File status32654
|
||
Node: Selected files35679
|
||
Node: Commands36347
|
||
Node: Updating the directory37558
|
||
Node: Movement commands39217
|
||
Node: Marking files39803
|
||
Node: Committing changes40658
|
||
Node: Editing files42124
|
||
Node: Getting info about files42969
|
||
Node: Adding and removing files43448
|
||
Node: Undoing changes44799
|
||
Node: Removing handled entries45259
|
||
Node: Ignoring files46176
|
||
Node: Viewing differences46706
|
||
Node: Emerge48014
|
||
Node: Reverting your buffers48988
|
||
Node: Miscellaneous commands49685
|
||
Node: Customization50427
|
||
Node: Future enhancements54107
|
||
Node: Bugs58298
|
||
Node: Function and Variable Index60079
|
||
Node: Concept Index62872
|
||
Node: Key Index69468
|
||
|
||
End Tag Table
|