I was using RCS under 4.0-release when it started causing me grief.  At
first I thought I'd been making typos in options, but I can replicate
what I *think* are two errors in behavior.  I welcome being set right.
(And I did check the change notes for 4.0-current, but didn't see
anything to indicate that this had been worked on.)

It has long been my habit to maintain every configuration file I "hand
edit" in RCS.  This means that I generally use the sequence:

co -l
 ....make changes with editor....
ci -u
 ....allow the system to run with new settings....

However, OpenRCS 3.6 won't allow me to cleanly do a co -l when the file
exists (mod 444) and there's no lock.  It complains that the file is
writeable (despite permissions being read only).  Also, if I abort the
checkout it still places a lock on the file.



An example sequence of commands:



$ touch test
$ ls -l test
-rw-r--r--  1 jon  wheel  0 Nov 27 11:20 test
$ ci -u test
RCS/test,v  <--  test
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> A test file
>> .
initial revision: 1.1
done
$ ls -l
total 4
drwxr-xr-x  2 jon  wheel  512 Nov 27 11:20 RCS
-r--r--r--  1 jon  wheel    0 Nov 27 11:20 test
$ ls -l RCS
total 4
-r--r--r--  1 jon  wheel  188 Nov 27 11:20 test,v
$ rlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1
date: 2006/11/27 16:20:57;  author: jon;  state: Exp;
Initial revision
=============================================================================
$ co -l test
RCS/test,v  -->  test
revision 1.1 (locked)
test exists; remove it? [ny](n): n
co: writable test exists; checkout aborted
$ ls -l
total 4
drwxr-xr-x  2 jon  wheel  512 Nov 27 11:21 RCS
-r--r--r--  1 jon  wheel    0 Nov 27 11:20 test
$ rlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
        jon: 1.1
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1    locked by: jon;
date: 2006/11/27 16:20:57;  author: jon;  state: Exp;
Initial revision
=============================================================================
$ ci -V
OpenCVS RCS version 3.6
$ co -V
OpenCVS RCS version 3.6
$ rlog -V
OpenCVS RCS version 3.6
$



With GNU RCS you can checkout a file that is not locked and is read-only:

$ touch test
$ ls -l test
-rw-r--r--  1 jon  wheel  0 Nov 27 11:39 test
$ gci -u test
RCS/test,v  <--  test
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> A test file
>> .
initial revision: 1.1
done
$ ls -l
total 4
drwxr-xr-x  2 jon  wheel  512 Nov 27 11:39 RCS
-r--r--r--  1 jon  wheel    0 Nov 27 11:39 test
$ ls -l RCS
total 4
-r--r--r--  1 jon  wheel  188 Nov 27 11:39 test,v
$ grlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1
date: 2006/11/27 16:39:47;  author: jon;  state: Exp;
Initial revision
=============================================================================
$ gco -l test
RCS/test,v  -->  test
revision 1.1 (locked)
done
$ grlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
        jon: 1.1
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1    locked by: jon;
date: 2006/11/27 16:39:47;  author: jon;  state: Exp;
Initial revision
=============================================================================



Also, in GNU RCS, if you abort a checkout of an unlocked file, the file
remains unlocked:

$ grlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1
date: 2006/11/27 16:39:47;  author: jon;  state: Exp;
Initial revision
=============================================================================
$ ls -l test
-r--r--r--  1 jon  wheel  0 Nov 27 11:41 test
$ chmod 644 test
$ gco -l test
RCS/test,v  -->  test
revision 1.1 (locked)
writable test exists; remove it? [ny](n): n
co: checkout aborted
$ grlog test

RCS file: RCS/test,v
Working file: test
head: 1.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
A test file
----------------------------
revision 1.1
date: 2006/11/27 16:39:47;  author: jon;  state: Exp;
Initial revision
=============================================================================
$



Thanks.

--Jon Radel
[EMAIL PROTECTED]

Reply via email to