Fossil has, for many years, detected potential forks prior to commit
and warned about them, or within the past few years has disallowed the
commit completely without the --allow-fork option.  If two users are
committing concurrently, the fork detection fails, but even then the
second user gets a message "**** warning: a fork has occurred *****".
The problem arises when the second user does not notice, or chooses to
ignore, this message and the situational awareness within the
organization is such that nobody notices the fork plainly displayed on
the timeline.  The check-in on the fork gets overlooked and fails to
make it into the next release.

Proposed solutions include denying the ability to commit or push a
fork.  But doesn't that just make the problem worse?  We've already
established that users are in the habit of ignoring scary fork
warnings.  Wouldn't they also just ignore the fact that the commit or
push failed?  With a fork, at least the content is safely on the
server and can be easily recovered by anybody willing to take a moment
to review the timeline.  But if the change never gets pushed, the
content is only on the developer's machine, out of view and
unrecoverable by anyone except the original developer.  And if it
never gets committed, then the work might be lost even to the original
developer.  How is that an improvement?

Other proposed changes include more frequent nagging about forks.  The
issue is less clear-cut, but I still worry that it might contribute to
warning fatigue.  I go by the motto that you should always distrust
any computer program that thinks it knows more than you do.  Constant
nagging about forks seems to move Fossil in the direction of programs
that I would not trust.  This is not to say that there shouldn't be
warnings, but there needs to be balance.

The "fossil update|co|checkout BRANCH" command takes you to the most
recent check-in for BRANCH.  If BRANCH contains leaves that are not
the most recent check-in, it seems like this would be a good time to
issue a warning.  The command might even fail with the message that
BRANCH is ambiguous and then provide a list of all possible SHA1
values that BRANCH could resolve to, enabling the user to retry the
command with an unambiguous SHA1 hash.

Another approach would be to provide commands (such as "fossil forks")
that actually show problems in the tree, for people who are actually
interested - for example the release manager.  A web-version of
"fossil forks" with graphical pictures of each fork would be nice to
have.

One other thing:  We ought to intentionally preserve several forks
within the Fossil self-hosting repository, so that we always have test
cases for the above mechanisms readily at hand.
-- 
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