Daniel Shahaf wrote:
> The write-up doesn't seem to consider the possibility of issuing
> a warning rather than a fatal error.  This would negate the "does not
> introduce a silent behavioural change" argument and not constitute
> a flag day to anyone who may be "intentionally or unintentionally relying
> on the current behaviour".  Thoughts?

Good question.  TL;DR: The behaviour is a bug not a feature.

The case in question is where someone is running a merge with differing source 
and target (repository-root) URLs, and getting the "foreign repository" kind of 
merge result, but their "foreign repository" has the same UUID.  The UUIDs 
indicate these URLs point to logically the same repository and so a "foreign 
repository" merge is the wrong behaviour.  If a user in this situation is 
getting results that "work" for them it is only by accident.  This is an 
exceptional case that we reasonably assume to be rare.

If we warn instead of error in this exceptional case, then in this case it 
would continue to perform the "foreign repository" merge.  While that may be 
convenient for anyone currently using this scenario (they would not have to 
change anything), it also has Bad properties: supporting misleading assumptions 
about how other variations of the scenario might behave.  But the convenience 
is only useful for users in this exceptional case, whereas the negatives are 
there waiting for everybody who may some day be caught out when they use a 
different variant of their URL.

In other words, continuing to support the current behaviour is a bug.

When filing the issue I couldn't quite decide whether it was a bug or an 
enhancement (and started filing it as a bug at first, then finally filed it as 
an enhancement), but after thinking through all this I conclude it's a bug (and 
I've just changed the issue type to reflect that).

-- 
- Julian

Reply via email to