https://invisible-island.net/ded/cm_tools/
permit - RCS directory-level permissions
permit [options] [directory-specifications]
Permit maintains a special-purpose RCS archive in each RCS directory in
a tree of files. The special archive records the access list for users
who are allowed to use the checkin and checkout utilities to place
locks on archives in the corresponding directories, as well as the
initial revision number for new files.
Permit scans each directory-tree given as an argument. If no argument
is given, permit processes the tree beginning with ".".
Each time an RCS directory is found, permit determines if the
directory-access file exists.
If no directory-access file is found, permit scans through all other
archives in the directory to infer the baseline version, and from that
the initial revision number for new files which may be created in that
directory. Then, permit creates a directory access file. By default,
the RCS directory owner is on each access list - otherwise manipulating
it is complicated.
Normally, permit issues rcs commands to add the directory owner to the
access list of each archive. The "-p" (purge) option is used to delete
all usernames from the access lists.
-auserlist
adds the list of specified users to each RCS archive access list.
-bnumber
specifies the baseline version for the directory. This must be an
integer greater than one. Permit verifies that no version in the
directory is higher than this value. Thereafter, this sets the
initial version for new files which are archived using checkin in
the directory.
-euserlist
expunges the list of specified users to each RCS archive access
list.
-l show symbolic links
-mmsg
overrides permit's default revision-log message "BASELINE date"
which is entered in the RCS,v file.
-n no-op mode causes permit to run, showing what it would try to do.
-p purges all usernames from each RCS archive access list.
-q makes the listing less verbose (i.e., suppresses display of the rcs
and ci commands, and of the directory tree).
-s same as "-q".
-uuserlist
generates a report showing which archives have the specified users
in their access lists.
-v makes the display more verbose; the names of files which cannot be
opened are reported.
An example of the use of permit is shown below. The user has asked for
a report showing what actions permit would make on the current
directory tree. The directory-access archives are not found, so permit
scans through each RCS archive to obtain the baseline revision number:
bsd4.2(64) permit -n
** path = .
1: ./
2: |-- RCS/
3: |---|-- 2.1 > COPYRIGHT,v (dickey,impact)
4: |---|-- 2.2 > Makefile,v (dickey,impact)
5: |---|-- 2.2 > README,v (dickey,impact)
6: |---|-- 2.1 > descrip.mms,v (dickey,impact)
ci -mPERMIT FILE -r2.1 ./RCS ./RCS,v
rcs -aimpact ./RCS,v
7: |-- certificate/
8: |---|-- RCS/
9: |---|---|-- 2.1 > Makefile,v (dickey,impact)
10: |---|---|-- 2.1 > config_sheet.txt,v (dickey,impact)
11: |---|---|-- 2.1 > descrip.mms,v (dickey,impact)
12: |---|---|-- 2.1 > release_notes.txt,v (dickey,impact)
...
Permit is a C-language program which runs in a portable POSIX
environment.
Environment variables include:
RCS_DIR
specifies the directory in which permit will find the ",v"
files. If not specified, permit assumes "RCS".
Permit is a single binary file, "permit". Within each RCS directory,
permit maintains an archive "RCS,v", which records the directory-access
list, as well as the beginning revision number for new files. The
directory-acces s archive file is named so that the set-uid
applications checkin and checkout are unable to modify it.
None.
Thomas E. Dickey <dickey@invisible-island.net>
baseline, rcs (1), ci (1).
2025-09-28 PERMIT(1)