On May 11, 2015, at 9:46 PM, Andy Goth <andrew.m.g...@gmail.com> wrote:
> 
> We have many customers with different requirements and firm restrictions
> on what can be shared between them, though we share as much as we can so
> that we're not duplicating effort.

In that case, I’d split your current repo into N+1 Fossil repositories.  Each 
customer gets their own private repo which links into the common code base 
built from the main repo.  The per-company repos might build static libraries 
for linking into the base, for example.

This gives you complete privilege separation without giving up on code sharing.

This does make sharing code between repos more difficult, but that’s what 
you’re after, isn’t it?

> a busy code line
> manager with many projects might just miss the fact that a developer
> checked something in directly to an integration branch.

Yes, and a busy HR department might miss the fact that Joe from Dept X always 
prints to Dept Y’s printer, because it’s closer, and he’s lazy.

If you have an actual problem, i.e. one that causes a problem in the code base, 
then you have a people problem.  Joe’s manager talks to him, straightens him 
out, tells him not to do it again.  If Joe is worth keeping around, Joe will 
heed this warning.

> it would also be good to make sure
> someone doesn't make a branch with the same name as something reserved
> for code line management or other administrative use.

Do you submit feature requests to your C/C++ compiler vendors asking for 
variable and function naming convention enforcement, too?

This is a training issue.  Tell your people what the naming convention is, 
provide a reasonable rationale, and come down on people who violate it.

>>> - Restrict the naming convention of non-propagating tags
>> 
>> This is less useful, since you can delete a tag and reapply it to
>> rename it.
> 
> I'm sorry, but I am having a hard time seeing the point of your
> statement in the context of this discussion.  If the naming convention
> of non-propagating tags is restricted, how does deleting and reapplying
> dodge the restriction?

You’re missing my point, which is that it is easy to fix a badly named tag: 
delete the improper one, and apply a new one with the proper naming scheme.

As with all of this, you want to fix the problem two ways: Fix the immediate 
problem, then fix the problem that caused the problem by talking to the 
employee who perpetrated the bad tag.

> non-propagating tags indicating stuff
> like QA approval or release.

I would think that branches serve that need well enough already:

    trunk
    |
    >------next-version branch
           |
           >------Joe’s experimental feature branch

QA signs off on Joe’s experimental feature by merging it into next-version.  
When the release manager is happy with the state of the next-version branch, he 
merges it into trunk.

A common variation is:

    trunk
    |
    >------stable-version branch
    |
    >------Joe’s experimental feature branch

In this scheme, QA signs off on Joe’s experimental feature by merging it into 
the trunk.  That stabilizes over time, with experimental features being held 
back during the stabilization window.  Then when the release manager is happy 
with the state of the trunk, he cuts a new stable version branch, allowing new 
experimental features to be checked into the trunk again.

> the version
> description document can and should give the SHA-1 artifact ID of the
> official release check-in, if anybody can move tags around, it's not
> safe to trust the symbolic tags.

So use the symbolic tags for convenience, and *also* record the artifact ID as 
“the truth.”

If it makes you happy, write a script that occasionally compares the current 
repo state with an archival copy of the tag-to-ID mapping, to catch people 
moving tags around.  Additions are silently added to the archive, deletions and 
changes cause alarums and havok.

> I won't disagree that this is a people problem, but in a large project,
> stuff like this can go undetected for a long time.

If it goes undetected for a long time because it doesn’t matter, then it 
doesn’t matter.

If the fact of it going undetected for a long time causes the company actual 
damage, then you have either hired an idiot or a saboteur, and you need to deal 
with *that*, not demand that Fossil be proof against malicious attack or 
ham-handed blundering by people you trusted with developer accounts on your 
repo.

Don't depend on Fossil to fix your company’s trust and competency issues.  Fix 
your company’s trust issues, hire competent people, then use Fossil.

This may sound familiar to you:

   http://thedailywtf.com/articles/source-history-information-tool

> Fossil only
> shows the original and the final changes, not the intermediates, so it
> can be hard to search for all superseded control artifacts in order to
> restore the desired version.

That’s just a UI issue.  Someone *could* add a feature to Fossil that would let 
you trace a comment’s change history.

Apparently, no one has needed to do so often enough that it’s been worth it to 
them to add this feature to Fossil UI. Until that happens, I don’t think it 
should be considered a blocking issue when choosing whether to adopt Fossil.

If you are one of those who will occasionally need this, but not so often that 
you’d like to add this feature to Fossil UI, you can drag the info out of the 
SQLite DB.

> requiring eternal vigilance over all branches,
> including those that haven't needed to be touched in years, is going to
> hurt Fossil's adoption in organizations like mine.

Um, have you actually *used* RSS?  Branches that don’t change cause no RSS 
updates, hence nothing appears in your feed reader.  You can monitor thousands 
of dead branches with zero incremental overhead, other than the time it takes 
to keep pulling dead feeds.

Any decent RSS reader will let you group feeds in such a way that unexpected 
changes to old dead branches will pop right out.

If you are uncomfortable relying on a human to monitor an RSS feed, it is easy 
to write a program that consumes the RSS feed and sends out panicked emails 
when closed branches get checkins.
_______________________________________________
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