I attempted to apply Corey Minyard's access control patch
(http://members.home.net/minyard/). The patch is relative to 1.11 and I
attempted to apply it to 11.1.1p1, which I understand is the latest
version.
It became apparent to me that converting the patch to the new version
required detailed knowledge of CVS internals, and so created risks that
I am unable to manage. CVS is a key development tool and outages are not
acceptable.
The purpose of this post is to set out what I learnt so that others may
be able to take up from where I have left off.
Several points require CVS internals knowledge:
- the root handling code (mainly in root.c) has been rewritten in
1.11.1. The patch uses the old code to implement an option to alias the
repository. So there is overlap between (a) the changes between 1.11 and
1.11.1 and (b) Corey's patch.
- the code in main.c to determine which commands modify the repository
has been rewritten in 1.11.1, but the patch adds some new commands.
These need to be integrated.
- the patch refers to a 'client_active' variable that 1.11.1 does not
define.
There are also a number of more routine tasks that need to be done as
part of the conversion:
- the patch adds several source code files, but the Makefile format
appears to have changed, so the Makefiles for the src directory need
updating. e.g. perms.c chacl.c chown.c passwd.c
- the changelist needs to be merged
- the code for the 'annotate' command has been moved out of rcs.c into
annotate.c -- you need to make sure that merging in the patch does not
result in two copies of this code.
I should make it clear that this is not a criticism of anyone. I am
aware of the constraints of freeware development. I would like to see
some form of access control lists in CVS; I don't have the time to write
an industrial strength implementation myself; so I contribute my
analysis only.
Regards,
Martin
_______________________________________________
Bug-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-cvs