Julian Foad wrote on Wed, Apr 07, 2021 at 11:33:35 +0100: > Daniel Shahaf wrote: > > Julian Foad wrote: > > > If we warn [...] it also has Bad properties: > > > supporting misleading assumptions about how other variations of the > > > scenario might behave. > > > > Could you be more concrete about those assumptions? > > It's not the warning itself but that continuing to behave illogically would > support bad assumptions. One example: if the user is accustomed to the > foreign-repo merge behaviour (despite same UUIDs) using a script that says (x > = repository root URL path) > source1=http://x source2=https://x target=https://x > then they might assume that "correcting" source1 in their script to say > source1=https://x source2=https://x target=https://x > would keep the same behaviour; but it doesn't. > > Of course a warning could try to explain sufficiently but the current > behaviour is not self-consistent enough to explain in one short sentence.
Not in one sentence, but we aren't limited to one sentence. I did propose example text in my previous reply. > > [...] we can phrase the > > warning clearly enough that anyone who runs into it unintentionally will > > abort the merge and re-do it "correctly", without us needing to enforce > > it by issueing a fatal error. > [...] > > I don't disagree with classifying this as a bug, but I still don't > > understand why issueing a warning wouldn't be satisfactory — or, at > > least, have 1.15 issue a warning and 1.16 upgrade that to a fatal error, > > just to be on the safe side. See the example output above, line 4. > > That's a good strategy for dealing with cases in general where a > behaviour one "supported" in practice needs to be withdrawn. If this > were an issue in a more main-stream merge case, I would agree. > However, the proposed benefit that we offer by continuing the merge is > targetting the wrong group: it is a supposed convenience to users > whose UUIDs are misconfigured, while it would be a hindrance to users > who run into it by accident while having their UUIDs correctly > configured. I don't see how getting a warning would be more of a hindrance than getting a hard error. Run some command, get a warning, read it, thank the tool for catching your error, correct your error. Happens every day with other tools, and even with svn(1)'s use of svn_cl__similarity_check(). How would getting a warning be more of a hindrance than getting a hard error? Is it because the user might do the merge before reading the error message (using up bandwidth and CPU), or because the user would be presented with a decision to make, or what? > Also, this is so much an edge case that it isn't worth > the extra complexity on our side; we don't have a great track record > of getting around to doing things that we scheduled for a later > release, for instance. Actually, I thought we could implement this by committing the code up front with a preprocessor-based time bomb: #if (SVN_VER_MAJOR > 1 || SVN_VER_MINOR >= 16) hard_error(); #else warning(); #endif > Handling it so gently for the affected users is a nicety that doesn't > feel worth it. Just erring on the side of caution. For affected users, the impact of releasing a hard error would be more significant than the impact of releasing a warning (with or without upgrading it later to a hard error); and we don't know how many users would be affected. The impact would be doubly notable if the change is made in a patch release, and triply if the patch release will also happen to feature a fix to a vulnerability (nowadays that we don't do separate releases for such). > I think the reasonable use cases for the case in question and the > likely number of occurrences in practice are both near zero. I don't > have numbers to back up this feeling, but as far as I am aware nobody > has reported this issue and it has existed for many years. I assume that by "occurrences" you refer to people who invoke this syntax unintentionally. > > By the way, I don't feel strongly about this matter; it simply happens > > to be the one place in the write-up of the issue where I couldn't see > > why an alternative design was ruled out. > > Ack, and thanks for picking up on this omission. Does that all stack up now? Not entirely, I'm afraid. Anyway, I don't feel strongly about 1.15.0, but I'm not too comfortable with converting the foreign merge to a hard error in a patch release. Even if doing a foreign merge on equal UUIDs is wrong, I don't think it's so wrong that we can tell people they should have realized on their own that they shouldn't be relying on this behaviour. Cheers, Daniel