diff options
Diffstat (limited to 'gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo')
-rw-r--r-- | gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo | 1744 |
1 files changed, 0 insertions, 1744 deletions
diff --git a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo b/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo deleted file mode 100644 index bb0a4fe..0000000 --- a/gnu/usr.bin/cvs/contrib/pcl-cvs/pcl-cvs.texinfo +++ /dev/null @@ -1,1744 +0,0 @@ -\input texinfo @c -*-texinfo-*- - -@comment Id: pcl-cvs.texinfo,v 1.45 1993/05/31 22:38:15 ceder 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.info -@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.05 -@comment -release- -@sp 3 -@center Per Cederqvist -@sp 3 -@center last updated 31 May 1993 -@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.05 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. -* 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 @samp{diff} different versions. -* Emerge:: -* Reverting your buffers:: Reverting your buffers -* Miscellaneous commands:: Miscellaneous commands -@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 -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 @file{pub/gnu/elib-0.07.tar.z}, and from a lot of -other sites that mirrors prep. Get Elib, and install it, before -proceeding. - -@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{Bugs}). - -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 - -@item -Jamie Zawinski (@samp{jwz@@lucid.com}) contributed -@file{pcl-cvs-lucid.el}. - -@item -Leif Lonnblad contributed RCVS support. -@end itemize - -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. - -@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 - -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 cvs-update 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.05. -@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 -* 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 @samp{diff} different versions. -* Emerge:: -* Reverting your buffers:: Reverting your buffers -* Miscellaneous commands:: Miscellaneous commands -@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-mode-update-no-prompt -@findex cvs-delete-lock -@cindex Getting the *cvs* buffer -@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 - -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 @kbd{M-x cvs-delete-lock RET}.@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-mode-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 ESC DEL - unmark all files -@kindex DEL - unmark previous file -@findex cvs-mode-mark -@findex cvs-mode-unmark -@findex cvs-mode-mark-all-files -@findex cvs-mode-unmark-all-files -@findex cvs-mode-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-mode-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-mode-unmark}).@refill - -@item M -Mark @emph{all} files in the buffer (@code{cvs-mode-mark-all-files}). - -@item @key{ESC} @key{DEL} -Unmark @emph{all} files (@code{cvs-mode-unmark-all-files}). - -@item @key{DEL} -Unmark the file on the previous line, and move point to that line -(@code{cvs-mode-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-mode-commit -@kindex c - commit files -@vindex cvs-erase-input-buffer (variable) -@vindex cvs-auto-revert-after-commit (variable) -@cindex Commit buffer -@cindex Edit buffer -@cindex Erasing commit message -@cindex Reverting buffers after commit - -@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-mode-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-@code{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 - -If you are editing the files in your emacs an automatic -@samp{revert-buffer} will be performed. (If the file contains -@samp{$@asis{Id}$} keywords @samp{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 @samp{cvs-auto-revert-after-commit} is set to -@samp{nil}.@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-mode-find-file -@findex cvs-mode-find-file-other-window -@findex cvs-mode-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-mode-find-file}).@refill - -@item o -Like @kbd{f}, but use another window -(@code{cvs-mode-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-mode-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-mode-log -@findex cvs-mode-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-mode-log}). - -@item s -Run @samp{cvs status} on all selected files, and show the result in a -temporary buffer (@code{cvs-mode-status}). -@end table - -@node Adding and removing files, Undoing changes, 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-mode-add -@findex cvs-mode-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-mode-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-mode-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-mode-commit}, -@pxref{Committing changes}) to commit the removal.@refill - -The command that is run is @code{cvs-mode-remove-file}. -@end table - -@node Undoing changes, Removing handled entries, Adding and removing files, Commands -@comment node-name, next, previous, up -@section Undoing changes -@cindex Undo changes -@cindex Flush changes -@kindex U - undo changes -@findex cvs-mode-undo-local-changes - -@table @kbd -@item 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 (@code{cvs-mode-undo-local-changes}. -@end table - -@node Removing handled entries, Ignoring files, Undoing changes, 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-mode-remove-handled -@findex cvs-mode-acknowledge -@findex cvs-mode-ignore - -@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-mode-remove-handled}. If -@samp{cvs-auto-remove-handled} is set to non-@code{nil} this will -automatically be performed after every commit.@refill - -@item C-k -This command can be used for lines that @samp{cvs-mode-remove-handled} would -not delete, but that you want to delete (@code{cvs-mode-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-mode-ignore}. -@end table - -@node Viewing differences, Emerge, 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-mode-diff-cvs -@findex cvs-mode-diff-backup -@vindex cvs-diff-ignore-marks (variable) - -@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}. If @var{cvs-diff-ignore-marks} is set to a -non-@code{nil} value or if a prefix argument is given (but not both) any -marked files will not be considered to be selected. -(@code{cvs-mode-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.@refill - -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}.@refill - -If @var{cvs-diff-ignore-marks} is set to a non-@code{nil} value or if a -prefix argument is given (but not both) any marked files will not be -considered to be selected. (@code{cvs-mode-diff-backup}).@refill -@end table - -@node Emerge, Reverting your buffers, Viewing differences, Commands -@comment node-name, next, previous, up -@section Running emerge -@cindex Emerge -@cindex Invoking emerge -@cindex Conflicts, resolving -@cindex Resolving conflicts -@kindex e - invoke @samp{emerge} -@findex cvs-mode-emerge - -@table @kbd -@item e -Invoke @samp{emerge} on one file. This command works slightly different -depending on the file status. - -@table @asis -@item @samp{Modified} -Run @samp{emerge-files} with your working file as file A, and the latest -revision in the repository as file B. - -@item @samp{Merged} -@itemx @samp{Conflict} -Run @samp{emerge-files-with-ancestor} with your working file (as it was -prior to your invocation of @samp{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. -@end table - -@strong{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 @kbd{q} -command inside @samp{emerge} (to successfully terminate the merge) the -file that CVS created will be overwritten. -@end table - -@node Reverting your buffers, Miscellaneous commands, Emerge, Commands -@comment node-name, next, previous, up -@section Reverting your buffers -@findex cvs-mode-revert-updated-buffers -@kindex R - revert buffers -@cindex Syncing buffers -@cindex Reverting buffers - -@table @kbd -@item R -If you are editing (or just viewing) a file in a buffer, and that file -is changed by CVS during a @samp{cvs-update}, all you have to do is type -@kbd{R} in the *cvs* buffer to read in the new versions of the -files.@refill - -All files that are @samp{Updated}, @samp{Merged} or in @samp{Conflict} -are reverted from the disk. Any other files are ignored. Only files -that you were already editing are read.@refill - -An error is signalled if you have modified the buffer since it was last -changed. (@code{cvs-mode-revert-updated-buffers}).@refill -@end table - -@node Miscellaneous commands, , Reverting your buffers, Commands -@comment node-name, next, previous, up -@section Miscellaneous commands -@findex cvs-byte-compile-files -@cindex Recompiling elisp files -@cindex Byte compilation -@cindex Getting rid of lock files -@cindex Lock files -@kindex q - bury the *cvs* buffer -@findex bury-buffer - -@table @kbd -@item M-x cvs-byte-compile-files -Byte compile all selected files that end in .el. - -@item 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. - -@item q -Bury the *cvs* buffer. (@code{bury-buffer}). - -@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-diff-flags (variable) -@vindex cvs-diff-ignore-marks (variable) -@vindex cvs-log-flags (variable) -@vindex cvs-status-flags (variable) -@vindex cvs-auto-remove-handled (variable) -@vindex cvs-update-prog-output-skip-regexp (variable) -@vindex cvs-cvsroot (variable) -@vindex TMPDIR (environment variable) -@vindex cvs-auto-revert-after-commit (variable) -@vindex cvs-commit-buffer-require-final-newline (variable) -@vindex cvs-sort-ignore-file (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 -@cindex -u option in modules file -@cindex Modules file (-u option) -@cindex Update program (-u option in modules file) -@cindex Reverting buffers after commit -@cindex Require final newline -@cindex Automatically inserting newline -@cindex Commit message, inserting newline -@cindex Sorting the .cvsignore file -@cindex .cvsignore file, sorting -@cindex Automatically sorting .cvsignore - -If you have an idea about any customization that would be handy but -isn't present in this list, please tell me! @xref{Bugs} for info on how -to reach me.@refill - -@table @samp -@item cvs-erase-input-buffer -If set to anything else than @code{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-diff-flags -A list of strings to pass as arguments to the @samp{cvs diff} and -@samp{diff} programs. This is used by @samp{cvs-mode-diff-cvs} and -@samp{cvs-mode-diff-backup} (key @kbd{b}, @pxref{Viewing differences}). If -you prefer the Unidiff format you could add this line to your -@file{.emacs} file:@refill - -@example -(setq cvs-diff-flags '("-u")) -@end example - -@item cvs-diff-ignore-marks -If this variable is non-@code{nil} or if a prefix argument is given (but -not both) to @samp{cvs-mode-diff-cvs} or @samp{cvs-mode-diff-backup} -marked files are not considered selected. - -@item cvs-log-flags -List of strings to send to @samp{cvs log}. Used by @samp{cvs-mode-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-mode-status} -(key @kbd{s}, @pxref{Getting info about files}). - -@item cvs-auto-remove-handled -If this variable is set to any non-@code{nil} value -@samp{cvs-mode-remove-handled} will be called every time you check in -files, after the check-in is ready. @xref{Removing handled -entries}.@refill - -@item cvs-auto-revert-after-commit -If this variable is set to any non-@samp{nil} value any buffers you have -that visit a file that is committed will be automatically reverted. -This variable is default @samp{t}. @xref{Committing changes}.@refill - -@item cvs-update-prog-output-skip-regexp -The @samp{-u} flag in the @file{modules} file can be used to run a command -whenever a @samp{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 @samp{"$"}. That setting is only correct if the command outputs -nothing. Note that pcl-cvs will get very confused if the command -outputs @emph{anything} to @samp{stderr}. - -@item cvs-cvsroot -This variable can be set to override @samp{CVSROOT}. It should be a -string. If it is set then everytime a cvs command is run it will be -called as @samp{cvs -d @var{cvs-cvsroot}@dots{}} This can be useful if -your site has several repositories. - -@item TMPDIR -Pcl-cvs uses this @emph{environment variable} to decide where to put the -temporary files it needs. It defaults to @file{/tmp} if it is not set. - -@item cvs-commit-buffer-require-final-newline -When you enter a log message in the @samp{*cvs-commit-message*} buffer -pcl-cvs will normally automatically insert a trailing newline, unless -there already is one. This behavior can be controlled via -@samp{cvs-commit-buffer-require-final-newline}. If it is @samp{t} (the -default behavior), a newline will always be appended. If it is -@samp{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. - -@item cvs-sort-ignore-file -If this variable is set to any non-@samp{nil} value the -@file{.cvsignore} will always be sorted whenever you use -@samp{cvs-mode-ignore} to add a file to it. This option is on by -default. - -@end table -@node Future enhancements, Bugs, 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. 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. - -@itemize @bullet -@item -Rewritten parser code. There are many situations where pcl-cvs will -fail to recognize the output from CVS. The situation could be greatly -increased. - -@item -@samp{cvs-status}. This will run @samp{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. - -@item -Log mode. When this mode is finished you will be able to move around -(using @kbd{n} and @kbd{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. - -@item -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 -@samp{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. - -@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. I planed to put these kind of commands on the prefix -@kbd{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. - -@item -Increased robustness. For instance, you can not currently press -@kbd{C-g} when you are entering the description of a file that you are -adding without confusing pcl-cvs. - -@item -Support for multiple active *cvs* buffers. - -@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 -An ability to send user-supplied options to all the cvs commands. - -@item -Pcl-cvs is not at all clever about what it should do when @samp{cvs -update} runs a program (due to the @samp{-u} option in the -@file{modules} file --- see @samp{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 @samp{stderr} without causing pcl-cvs to -crash. -@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{Bugs} for -information about how to reach me.@refill - -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 @samp{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. - -@node Bugs, Function and Variable Index, Future enhancements, Top -@comment node-name, next, previous, up -@chapter Bugs (known and unknown) -@cindex Reporting bugs and ideas -@cindex Bugs, how to report them -@cindex Author, how to reach -@cindex Email to the author -@cindex Known bugs -@cindex Bugs, known -@cindex FAQ -@cindex Problems, list of common - -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! - -Below is a partial list of currently known problems with pcl-cvs version -1.05. - -@table @asis -@item Commit causes Emacs to hang -Emacs waits for the @samp{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 @samp{stdout} and @samp{stderr} if you do -not want to wait for it. (You do that with @samp{background-command &>- -2&>- &} if you are starting @samp{background-command} from a -@samp{/bin/sh} shell script). - -Your emacs will also hang if there was a lock file in the repository. -In this case you can type @kbd{C-g} to get control over your emacs -again. - -@item 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 -@file{cookie.el}. One of the files will have to be renamed, and we are -currently negotiating about which of the files to rename. - -@item 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. - -@item 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. -@end table - -@node Function and Variable Index, Concept Index, Bugs, 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 |