pcvs or PclCvs, is a mode for interacting with multiple files in a CVS repository. ‘pcvs’ comes shipped with Emacs 21 and later. XEmacs has had it for a longer time.

CVS was one of the first free and widely used revision control systems that could manage groups of files and entire directory trees, rather than just one file at a time like predecessor systems, RCS and CSSC. The design of Emacs’ VersionControl mode unfortunately only supports these single-file operations. PclCvs was the first Emacs mode to support aggregate operations on CVS files.

pcvs启动: `M-x cvs-status RET <directory> RET'

Note that ‘pcvs’ can usefully coexist with the traditional VersionControl mode; there is no need to pick one over the other, as they perform quite distinct functions.

See also PclCvsTips.

PCL-CVS and PCVS in Windows and win32 Environments

For use with putty and plink.



I realized that PCL-CVS is quite slow on win32 systems. The same box booted into Linux needs less than a second for a project of 30 files with 50 revisions per file and quite a lot of tags while on win32 the same project needs 4 seconds or even longer. The protocol used by cvs to communicate with the server is pserver in both cases. The server is located in the local network. I first thought the bottleneck is the extra parsing effort in elisp due to the large number of tags in output of cvs status. But that’s the same task for both Windows and Linux.

So now I would go for process creation, which is known to be a lot slower on win32 systems. But is PCL-CVS starting a process for each directory? A single cvs status command for the complete directory tree should be sufficient. Maybe I have to dig into the elisp code ..