[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS globally, RCS locally
CVS globally, RCS locally
21 Sep 2000 18:08:10 +0200
Gnus/5.0807 (Gnus v5.8.7) Emacs/20.7
There is a new feature in VC that should make life easier for people
with slow CVS repository access. You can now use RCS for local
editing and commit your changes to CVS only when it seems
appropriate. (Well I guess most of you have been doing something like
that all the time, but now it's nicely supported in VC.)
Here's how it works: When you have a file under CVS-control, you can
create a local RCS copy by typing C-u C-x v v rcs RET. This works
both when the file is already modified, and when it is still unchanged
with respect to CVS.
You can then edit locally under RCS. To make this feel similar to
CVS, VC uses non-strict locking for the file (i.e. the file is always
writeable), and changes are checked in to a branch based on the
current CVS revision number.
When you are done editing, you can commit the file back to CVS by
typing C-u C-x v v cvs RET. This also works regardless whether you
have checked in all your changes to RCS, or whether some changes are
still only in the working file. When moving back to CVS, the RCS
master file is deleted and the log entry buffer is initialized to the
comment history as it was found in the RCS master (this latter feature
is not yet implemented).
Alternatively, you can switch back and forth between RCS and CVS using
the new command C-x v b (vc-switch-backend). This does not change any
files, but changes only VC's perspective of the file. You can use
this to pick up changes from CVS into your local RCS copy
(via C-x v m RET), and the like.
Of course the feature is generically implemented and could be used
between any two or more backend systems. Note however, that the "local
backend" must come earlier in `vc-handled-backends' for this to work
(this is the default in the current VC).
Note also that VC/CVS has become much faster than it used to be.
Especially under the new mode vc-cvs-stay-local (which is on by
default), repository interactions are kept to an absolute minimum.
I am planning to further enhance this by making a local copy of the
repository version of a file, which will allow for completely local
diffs (C-x v =) and local reverting (C-x v u).
Hope you'll like these features; if they don't suit your needs, please
don't hesitate to let me know and maybe we can work out something.
Thanks to Gerd and Stefan for discussions that shaped these new
- CVS globally, RCS locally,
Andre Spiegel <=