pcl-cvs / NEWS

This is the NEWS file for pcl-cvs, an Elisp front-end to CVS.

Changes from 2.9.4:

* ediff can now also be run on files which have not been merged
  from within pcl-cvs.  This is currently achieved simply by using
  VC's vc-resolve-conflict.

* the branch-prefix now also applies to cvs-mode-log.

* cvs-mode-untag has been added.

Changes from 2.9.2 to 2.9.4:

* tagging should finally work.

* fixes for NT and for Emacs 19.34.

* tag completion for `b' and for `de'.

* there is a new prefix key `b' used to make the following command
  operate on a specified version.  `C-u b' queries for a new version
  while `b' justs sets the prefix for the next command.  Currently only
  cvs-mode-diff and cvs-mode-update use this prefix.

* cvs-parse-ignored-messages can be used to keep a list of regexps
  of messages that pcl-cvs should ignore.  This is mostly useful for
  CVS messages that pcl-cvs still doesn't know about or for messages
  coming from other programs exec'd by CVS such as ssh.

* cvs-update, cvs-examine and cvs-status now always request a directory.
  This reverts the behavior to what it was long ago.  If you want a quicker
  way to run it on the current directory, use `g', `M-e', `M-u' or `M-s'.

Changes from 2.9 to 2.9.2:

* various fixes

* A new binding `g' is used to ask a refresh of the buffer.
  It actually does a cvs-examine.

* the `running cvs' message is now deleted when the process exits.

* the hack that calls cvs-examine when you open a */CVS directory has
  been tuned:  it only does it when there is an Entries file in the CVS
  directory (should hopefully prevent pathological cases where you have
  a normal directory called `CVS').  Furthermore, it only has that neat
  behavior if you pass a simple prefix-argument to the command you use
  to open the directory (such as C-x C-f).  This last point can be customized
  with the cvs-dired-use-hook variable:  you can go back to the previous
  behavior (more intrusive and with the twist that providing the prefix-arg
  then turns off the hack) or completely inhibit this nasty intrusion
  in your nice Emacs habits.

* cvs-edit-mode now calls cvs-edit-mode-hook.
  the hook's value defaults to the value of vc-log-mode-hook.

* cvs-mode-examine on a directory now cleans the previous contents of
  the dir so as to avoid keeping outdated entries.

* changed the default faces not to use `bold' everywhere any more.

Changes from 2.5 to 2.9:

* Interaction between VC and pcl-cvs is much improved.
  pcl-cvs-hooks now hooks into the heart of VC (vc-do-command) where it
  gets a chance to parse cvs' output on VC-executed cvs commands.  This
  allows pcl-cvs to keep its buffers uptodate in the face of VC actions.
  Note: `vc-register' uses `cvs add' which might end up being a
  `cvs -q add' if you have -q in your .cvsrc, in which case pcl-cvs
  doesn't get enough info to notice that the file was added:  don't put
  `-q' in your .cvsrc file if this misfeature bothers you (a workaround
  is not really difficult to write up, but it's too ad-hoc, flakey and/or

Changes from 2.0.90 to 2.5:

* You can now add any file to the display with cvs-mode-insert (bound to `I').
  This allows you to then cvs-mode-add an ignored file, for instance.

* clicking (mouse-2) on the status of an entry will toggle its mark.
  local keymaps are used for each field, so you can set your bindings the way
  you like them.  The maps are `cvs-{filename,dirname,action,status}-map'
  and can be set from `pcl-cvs-load-hook'.

* `revert-buffer' in the *cvs* buffer reruns cvs-examine.

* doing cvs-mode-add on a directory currently labelled as `unknown' will
  do the right thing now (it used to leave the display unchanged).

* You don't need to always enter a description when adding files:
  just set cvs-add-default-message to some default string.  You'll still
  be able to enter a description by providing a prefix argument.

* reworked the ediff/emerge support. `de' is now bound to cvs-mode-idiff
  while `dE' is bound to cvs-mode-imerge.  They will do an
  interactive diff resp merge using either ediff or emerge, depending on
  `cvs-idiff-imerge-handlers'.  Also imerge should now do the right thing
  more often: if you do an cvs-update with flags `-jbranch' it will fetch
  the right files.

* arguments can now contain strange characters.
  If you want to pass three args where the middle one contains spaces, use:
	arg1 "this is arg2" arg3
  The quoting rules between double quotes are the usual emacs rules.
  Note that `a"b"c' will be taken as three arguments, but don't rely on that.

Changes from 2.0b2 to 2.0.90:

* The important variables have been cutom-ized.

* It doesn't use any /tmp files any more.

* several simultaneous *cvs* buffers.

* only one `cvs' command is executed across multiple directories.
  This may not always work for cvs < 1.10 but you can change it.

* highlighting and menu support (a la font-lock).

* cvs-mode-<cmd> are now run in the background
  and most of them pass through the parser for "reliable" update of the display

* font-lock support for diff output.

* all the -other-window have disappeared since cvs-examine and friends uses
  `pop-to-buffer'.  Just set the pop-up-frame/pop-up-window according to your

* `cvs-redo' (previously bound to `g') has disappeared.
  Rerunning cvs-<cmd> will default to the current directory (unless you use a
  prefix arg).

* cvs-mode-diff-cvs has been renamed cvs-mode-diff

* keybindings have been changed (ouch).  M-e is cvs-examine, M-s is
  cvs-status, M-u is cvs-update.

* all the cvs-mode-set-<foo>-flag have been replaced by a single
  cvs-set-mode-flag which will ask which flag you want to change.
  It is bound to `F'.

* Pcl-cvs will now read your .cvsrc file to set the default value of flags.
  Note that this comes with support for `cvs-cvs-flags' which tells what flags
  to pass to cvs before the command.  The default is inherited from .cvsrc by
  adding `-f' (to override .cvsrc) and removing `-q' or `-Q' (if present) 
  which would prevent cvs from outputiing crucially useful (to pcl-cvs)

* cvs-auto-remove-handled-directories has been renamed to
  cvs-auto-remove-directories which can either be t or 'handled.

* most of the work for commit has been moved from cvs-mode-commit to
  cvs-edit-done:  the flags request, the extraction of marked files, ...
  You can even do several commits from the same cvs-edit buffer without doing
  a cvs-mode-commit in-between (mostly useful if you set `cvs-allow-dir-commit')

* Updated and Patched are now subtypes of Up-to-date, while Merged is a subtype
  of Modified.  Commited and Added are also subtypes (of Up-to-date).
  This subtype is displayed (if present) instead of the head-revision (the two
  infos share the same place in the buffer, and it seems there's little (if
  any) overlap).

* `co' and `ci' have been replaced by a short text describing some kind of
  `default' action.  `ci' is more or less replaced by `com(mit)' while `co'
  is replaced by `upd(ate)'.  A new alternative is `udo' which stands for undo.

* made lots of the `after cvs execution' processing more uniform (the
  auto-revert was only done after commit, ...)

* cvs-auto-revert-after-commit is renamed to cvs-auto-revert.

* pcl-cvs-hooks.el allows to hook pcl-cvs into other packages (using `advice').
  There is a hook for dired which allows to run `cvs-examine' (or `cvs-status'
  if you prefer) instead of dired whenever you open a .../CVS directory.
  Another hook slightly improves uniquify's behavior in the case of multiple
  cvs buffers.
  While yet another hook instructs VC to call diff-mode on *vc-diff* buffers.

User-visible changes in pcl-cvs from 1.05 to 2.0b2:

* Pcl-cvs now requires GNU emacs version 19.xx or newer.

* Pcl-cvs has been tested with CVS version 1.9.

* Pcl-cvs no longer *needs* to know about all the possible messages from
  CVS, though some functionality may be limited if it fails to parse
  some messages.  The old bug-report generator is gone.

* There's a new display mode invoked by cvs-status (or
  cvs-status-other-window).  Like cvs-examine it doesn't cause the
  current working directory to be modified.  Unlike cvs-examine it
  always shows all the files in the current directory.  Unfortunately it
  always runs "cvs status -l ." when working with versions of CVS prior
  to 1.10 due to the limited information in the output of "cvs status".

* There are new commands cvs-mode-diff-head and cvs-mode-diff-vendor
  that do essentially what you'd expect them to do.

* The default interface to cvs-mode-diff-* functions has been mapped to
  a prefix key 'd'.  The default cvs-mode-diff-cvs command is also now
  mapped to the '=' key.

* A user-settable variable controls whether the various cvs-mode-diff-*
  commands will generate a unique buffer, or use the *cvs-tmp* buffer.

* There are new commands cvs-mode-tag and cvs-mode-rtag.

* There are new commands cvs-checkout and cvs-checkout-other-window.

* Support for managing ChangeLog files, including extraction of default
  commit message contents, has been added.

* Updates to the hooks for the ediff and emerge modes have been
  incorporated (but have not yet been tested to any degree).

* It is now possible to set (or change) some of the default flags passed
  to various CVS commands.  See cvs-update-optional-flags,
  cvs-status-flags, cvs-log-flags, cvs-diff-flags, cvs-tag-flags,
  cvs-rtag-flags and their corresponding cvs-set-*-flags functions.

User-visible changes in pcl-cvs from 1.04 to 1.05:

* Elib is no longer distributed with pcl-cvs.  You must get Elib
  separately, for instance from in pub/emacs.

* The Lucid Emacs support works again.

* A new function, cvs-change-cvsroot, can be used to interactively
  switch between CVS repositories.

* The mode line in the *cvs* buffer now indicates when a "cvs update"
  is running.

* The .cvsignore file is automatically sorted alphabetically (to
  reduce the risk of conflicts when two people add different files
  simultaneously). This behaviour can be turned off with

* A trailing newline is always added in commit log messages.  This
  behaviour can be turned off with

* This version of pcl-cvs should work together with RCVS.  I have not
  tested this myself, though.

* Plus some bug fixes.  (Note that the version of cookie.el that is
  distributed with pcl-cvs 1.04 contains errors that affects pcl-cvs.
  You should get Elib 0.07).

User-visible changes in pcl-cvs from 1.03 to 1.04:

* Support for Emerge.  Hitting "e" on a file that is Modified, Merged
  or in Conflict will start Emerge, an interactive file merger written
  in Emacs Lisp.  This requires Emerge version 4.  Emerge is not
  included in this package.  If you can't find it anywhere else, you
  can get in from in pub/emacs.  This package makes
  it a lot easier to resolve conflicts.

* Emacs will now automatically revert your buffers when the CVS
  commands pcl-cvs issues causes the file to change.  This automatic
  revert never occurs if the buffer contents did not agree with the
  file prior to the command.

* If you are running Lucid GNU Emacs, you will get some fonts and
  mouse support.  This was contributed from people at Lucid.

* The variable cvs-cvsroot can be used to select the location if the
  repository.  You no longer need to exit Emacs, setenv CVSROOT, and
  start a new Emacs if you work with multiple repositories.

* The "q" key can be used to hide the *cvs* buffer.

* The name of the commands in the *cvs* have changed. If it was called
  cvs-foo, it will now be called cvs-mode-foo.  See the ChangeLog
  entry from Tue Aug  4 03:02:25 1992 for a complete list of changes.

* The variable cvs-cvs-diff-flags is no longer used.  Instead,
  cvs-diff-flags is always used.

* Plus a lot of bug fixes.

User-visible changes in pcl-cvs from 1.02 to 1.03:

* Output from CVS to stdout and stderr is separated and parsed
  independently.  In that way pcl-cvs should work regardless of
  whether stdout is buffered or line-buffered.  Pcl-cvs should now
  work with CVS 1.3 without modifications on hosts such as

* Pcl-cvs now fully supports RCS version 5.6 as well as 5.5.

* New functions:

    + cvs-undo-local-changes ("U") - Undo all your modifications
				     to a file and get the newest
				     version from the repository.
    + cvs-update-other-window	   - Similar to cvs-update.
    + cvs-byte-compile-files       - Byte compile the selected files.

* cvs-update now displays the *cvs* buffer, which initially contains a
  small message ("Running `cvs update' in /foo/bar/gazonk/...") until
  the update is ready.  The *cvs* buffer no longer pops up when the
  update is ready.  It often failed to pop up, due to race conditions
  that are very hard to solve (and I doubt that they were at all

* cvs-unmark-all-files is moved from "U" to "ESC DEL" to be
  "compatible" with dired.

* cvs-diff ("d") and cvs-diff-backup ("b") can be configured to work
  on only the file the cursor is positioned on, and ignore any marked
  files.  A prefix argument toggles this.

* Only one `cvs update' can be run at a time.  (It was previously
  possible to start more than one simultaneously, but pcl-cvs could
  not really handle more than one.)

* Some rudimentary support for programs that CVS runs at update (due
  to the -u switch in the modules file).

* Pcl-cvs now automatically generates a bug report if it can't parse
  the output from CVS.

* The *cvs* buffer is read-only.

* Pcl-cvs now creates temporary files in $TMPDIR if that environment
  variable is set (otherwise it uses /tmp).

#ident @(#)$Name$:$Id$