Subject: Re: bug#9123: bug/misbehaviour in vc-next action when stealing locks

From: Glenn Morris <[email-masked]>
Date: Mon, 5 Sep 2011 20:55:11 -0400

Kourosh Neshatian wrote (on Sun, 4 Sep 2011 at 15:57 +1200):

> I wonder if you could reproduce the error.

No, see below.

> > Steps to reproduce the error:
> >
> > 1. Alice (user name 'alice') runs Emacs with 'emacs -q --no-site-file'
> >
> > 2. Alice creates a text file in the directory, say 'document.tex', writes
> > some text in it and saves it.
> >
> > 3. She runs 'vc-next-action' (C-x v v) and chooses RCS as her
> > backend. This creates an RCS file 'RCS/document.tex,v'.
> >
> > 4. Alice checks out and locks the file again by 'vc-next-action' (C-x
> > v v) to add/make some changes in the document.

I did the following as normal user A:

umask 0
mkdir ~/foo
echo "test" > foo/1
emacs-23.3 -Q foo/1
C-x v v RCS RET RET  # now registered with RCS
C-x v v  # now file is checked out

> > 5. Meanwhile, Bob (user name 'bob') logs in.  He has access to the RCS
> > directory (usually via a symbolic link). He checks out document.tex
> > stealing  the lock (rcs -l ...).

I logged in as normal user B and did:
emacs-23.3 -Q ~A/foo/1

Emacs says "Note: file is write protected".

C-x v v
 steal the lock yes/no?  yes RET

A mail buffer pops up, prompting me to send an email to user A explaining
why I stole the lock. I do so.

> > 6. Now, Alice has finished editing her copy; she saves the file and
> > runs 'vc-next-action' (to check in). Emacs will ask her if she wants
> > to steal the lock, she says 'yes'. What happens is that Emacs
> > over-writes her local copy by the last version in the
> > repository. Alice's changes/edits are all gone and apparently she does
> > not have any means to recover!

Back in user A's still-running Emacs, I type some text in the still
open buffer. Emacs says:

  file changed on disk; really edit the buffer? 

I answer yes, type some text and save. Emacs says:

  file has changed since visited or saved.  Save anyway?

I answer yes. Emacs says:

  file is write-protected; try to save anyway?

I answer yes.

I then do C-x v v and try to check in the file. This fails, with an
error message that the file is locked by user B.

This was with RCS 5.7. I never notmally use RCS, maybe I am missing
something.