This project is for recompiling a protections table, to remove redundancy.
It is supplied as a sort of proof of concept at the moment. Do NOT use for
any enterprise application. But if you are looking at how to solve this
problem, here is how I did it.
It really needs some heavy refactoring to get rid of the procedural style
of things that has crept into the design.
p4re-prot.rb under the ./lib directory will take the config options
from ./lib/configuration/config.rb (only really uses checkpoint value,
the others are inteded for validation).
re-prot-setup.rb does the some ina less messy fashion, the odd code
style was for the messy tests that were quickly thrown up around the
HOW DOES IT WORK?
We create a tree structure in memory, that mimics the directory tree of
the perforce server.
For each node of the tree, we add the access level each user/group has
at that path.
For the re-compilation, we traverse the tree and look for duplicates
and redundancy (though some is removed earlier), removing these
from the tree.
We then output the tree that is left as a protections table.
WHERE ARE MY SPECS?
The test specs are also not provided, because they were badly written, and
not really helping prove anything. They require a re-write, though re-writing
the tests would highlight the refactoring that needs to take place, a feat
I don't currently have time for.
In terms of validation, it is a problem that i didn't get round to before
losing my perforce license, and therefore ability to create reasonable
To test the output protections table in a truely meaningful way, the only
method I could come up with is to fire up two instances of the perforce
server one with the old protections, one with the new; then for each
user/group find the protection level for each known directory/file on
both servers and compare.
Heavy handed; but to be sure that the protections are the same they
MUST be tested using the actual Perforce Server binary.
Adding my protections re-compilation project. README explains the
current status of the project.