On 5/12/15, Ron W <ronw.m...@gmail.com> wrote:
> On the other hand, if [you] require such strict controls,
> a DVCS, whether Fossil, Git or other, is likely not the tool you need.

Thanks, Ron.  I was going to make this point earlier myself...

In distributed VCS like Fossil or Git or Hg, the developer has direct
access to a copy of the repository.  That means they can change their
local copy any way they want.  Even if the tool does not provide the
capability, a determined developer with a binary editor can still get
the job done.

So the only way for the central repo to enforce strict controls is to
carefully analyze content it receives via "push" and reject
non-conforming content.  This is difficult to implement and maintain.
It also leads to a situation where the content in the developers repo
does not exactly match the central copy because some of the content
was rejected.  And it seems like inconsistencies between developer
copies and official copies is something that you should be zealous to
avoid.

I recognize that some people want more control.  But the right way to
do that, I think, is to create a centralized VCS.  A distributed VCS
is not really the right platform for implementing a centralized
policy.

That said, I've been toying with ideas of a hybrid
centralized/distributed VCS that tries to offer the best of both
worlds - disconnected operation for availability but also close
coupling to the central repo with the opportunity to enforce policy.
Some of these ideas I've previously shared with my "Fossil 2.0" post.
But all this is just speculation at the moment.  Any implementation is
a long ways off.

For the short-term, if you have suggestions for preventing accidents
and those suggestions are reasonable to implement, then we will
certainly look into that.  But do bear in mind that Fossil was never
designed to implement rigid controls.  I purposefully followed design
rules like this:

(1) Assume that developers (people with push privilege) are not
malicious and will usually follow the rules.  (Such assumptions are
*not* made about users with less privilege, such as random passers-by
on the internet, obviously.)

(2) Provide lots of visibility into the state of the repository (many
of reports and graphs and charts and tables) so that if one of your
developers does break the rules, those rule violations will be easily
visible.  (In other words, promote situational awareness.) This is
why, for example, all tag changes appear on the timeline.  And this is
why the "info" page for a check-in shows both its current
comment/user/time and its original comment/user/time.  And so forth.

(3) Provide a detailed and immutable audit trail so that if violations
of policy are detected, they can be tracked back to the perpetrator
and dealt with administratively.  Examples of this include the
"rcvfrom" table in the database that records the time, login name, and
IP address for all new content received.

Again, we will certainly consider new features that are unintrusive
and maintainable and that help prevent project errors.  But adding
dozens or hundreds of new details permission settings and doing
low-level automated audits of content being pushed probably does not
qualify as unintrusive and maintainable.  So please continue to
suggest new ideas, but also recognize that you might be trying to push
Fossil to do things that it was never designed to do.

Note that suggestions for improving the reporting and
policy-violation-detection capabilities of Fossil will generally be
better received than suggestions that try to get Fossil to actually
enforce the policy.
-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to