Last updated: Thursday, 1 January 1970 00:00 00000
Generated-and-frobbed Man Page
Below is the HTMLised version of the
man page which accompanies
the package. It was generated from the actual man page source,
then heavily modified by hand to make it into valid and usable
HTML. No content was changed during the modification.
Manpage of spackle.karma
Section: Utilities (5)
Updated: August 2002
Return to Main Contents
avail, karma, ... - the Spackle karma file
The Spackle karma file lives in the CVSROOT directory of
a Spackle-enabled CVS repository, and is used to determine whether
users may commit files. It is accessed through the SpackleConf
Perl module (q.v.), and is evaluated every time a commit
Blank lines and those beginning with '#' (possibly preceded by
whitespace) are considered comments and ignored. Any other line
not beginning with "avail", "unavail", or "group" will result in
the line being skipped and an error being displayed.
Each non-comment line consists of three fields delimited by
vertical bar characters ('|'). The first field is a keyword
that determines how the other sections are interpreted:
Identifies users who explicitly have commit access. The second field
is a comma-separated list of names, and the third field is a comma-separated
list of modules (relative to the CVSROOT) to which commit access is
Defines and names a collection of users. The second field specifies
the group name, and the third field is the comma-separated list of
members of the group. A group may be defined multiple times; each
new definition completely replaces any existing on, and references to
the group expand to the most recent definition.
Identical to the avail syntax except that it identifies
users who are explicitly being denied commit access.
The keyword field is case-insensitive; all other fields are
case-sensitive. Wildcards and regular expressions
are not supported.
Usernames may be either simple words, like root or rjones,
or they may be group references of the form :groupname.
Group references are expanded when they are encountered, so a particular
group name may expand to different sets of users depending upon
where it occurs in the file. Group references may appear
anywhere usernames may -- including in group definition lines.
When the last line is processed, group u1 will consist of
Lines beginning with avail or unavail define access
to portions of the repository, so they're called access lines.
The avail and unavail lines treat missing fields as
matching all values. For instance, the simple line
denies commit access to all users, to all modules. Similarly,
grants commit access to the /sandbox module to all users.
Usernames in an access line are compared against both that
supplied as part of the commit and that under which CVS is
running. For this reason, be very careful about listing
the server's username in the karma file when your repository is
accessed through pserver.
Usernames must match exactly, and are case-sensitive. No partial
matches are performed (e.g., steve and steven will
Values in an access line's module list are paths relative to and
rooted at the
CVSROOT. (That is, the subdirectory bar under the module
foo would appear in the module field as /foo/bar.)
They may be directory names or file
names. Non-blank module fields are matched against the items being
committed. If the top-level CVS module into which the commit is being
attempted appears in an access line's module field, or is a proper
descendent of one of those values, the line matches. If it doesn't,
but all of the files being committed appear in the module field,
it also matches. If neither of these conditions is true the line is
considered inapplicable to the commit and is ignored.
In other words, using directory names in the module field
allows committing of any file (or group of files in a single
commit) in the tree below that directory.
If individual file names are used in the module field,
then files must be committed individually or all files specified
in a single commit must all appear in the module field a single
All non-comment lines in the karma file are processed sequentially.
Each group and access line is evaluated as it is encountered.
Essentially, karma process tracks the status of a bit: matching
avail lines turn the bit on, and unavail lines that
match turn it off. If the bit is set when all of the lines have
been processed, the user is allowed to perform the commit; otherwise,
a message is displayed and the commit is aborted.
The bit is set before the karma scan begins.
(Text from the ';;' rightward may not appear in the file.)
- unavail ;; Make whole repository
;; unavailable by default.
avail|dgg ;; Except for user "dgg".
avail|fred, john|bin/ls ;; Except when "fred" or
;; "john" commit to the
;; module whose repository
;; is "bin/ls"
Commit access to files in the /projx-docs module is granted
to everyone in the developers and techwriters groups --
namely, to joe,steve,elaine,debbi,george,louise.
This permits everyone to commit to any module in the repository --
except Chris, who isn't allowed to commit code (perhaps due to
demonstrations of poor judgement in the past).
Wildcards and regular expressions are not supported.
Rodent of Unusual Size <coar@Apache.Org>
For more information, see the Spackle project Web site at
- USERNAME INTERPOLATION
- ACCESS LINES
- Omitted Fields
- Username Matching
- Module Matching
- Example 1:
- Example 2:
- Example 3:
- SEE ALSO
This document was created by
using the manual pages.
Time: 18:03:55 GMT, August 17, 2002