On Mar 3, 2017, at 6:29 AM, Richard Hipp <d...@sqlite.org> wrote:
> 
> (1) When creating a new check-in, use the hash algorithm (SHA1 or
> SHA3) that is used by the primary parent check-in.

I’m not certain what “primary” means in this context.  I assume that it’s a 
distinction for cases where two “parents” exist, but what is the rule that 
determines which one is primary?

For instance, when you’re cherrypicking, I assume the primary is the branch the 
cherrypick is being applied to, rather than the branch the cherrypicked change 
came from.  Is that correct?

How about merges?  Is the primary parent the branch being merged into, rather 
than the branch being merged *in*?

If all of that is correct, then this behavior seems sensible: the ongoing 
branch in both cases keeps its hash default rather than being “tainted” by the 
donor branch.

> (2) Exception to (1) above:  Use SHA3 for new check-ins if the --sha3
> command-line option is used.

I’m confident that the vast majority of Fossil users don’t watch the mailing 
list, so they’ll be somewhat ignorant of the issues.  They may hear that Fossil 
now uses SHA3, and they’ll upgrade and assume they’re using stronger hashes 
now, without realizing that they need to make an affirmative step to switch to 
the new-style hashes.  Then years down the line, they’ll learn that all their 
checkins in that time are still SHA-1, and that there’s no easy way to go back 
and “fix” them, on purpose.

You can say that it’s fixed by documenting the change, but we all know how RTFM 
arguments play out.

On the other hand, it does provide a “don’t touch my tree” option to those who 
believe themselves informed and who wish not to upgrade anyway.

I can see both sides.  It’s a tough choice.

I suppose given the alternative — someone in the latter camp forking Fossil 1.x 
— this is a better choice.

> (3) New repositories are initialized using SHA3

That’s good.  It solves my “defaults matter” concern.  Hopefully the vast 
majority of *future* Fossil users haven’t even started using it yet, so that 
over time, we’ll still end up with a majority of SHA3-based repos.

Maybe there should be a “fossil init --sha1” option for the technologically 
conservative.

> (4) When new content is added by means other than a check-in
> (examples: cluster artifacts added by the server on a sync, Wiki
> pages, ticket attachments, or unversioned content files) then use the
> hash algorithm that was used by the most recent check-in.

That’s kind of random.

If my trunk is SHA3 because I’ve remembered to give --sha3 on a recent checkin 
and my old stable branches are still SHA1 because I update them less than once 
a month on average, my non-checkin artifacts are going to use both until I get 
around to modifying each stable branch at least once while also remembering to 
update the hash algorithm.

I think it would be better to use the hash style of tip-of-trunk instead.
_______________________________________________
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