Improve "Cherry pick from changeset interval" range
The "Cherry pick from changeset interval" is a bit confusing to me.
I want to cherry pick from changesets cs10 to cs15.
So, I intuitively select cs10 and cs15 and do a cherry pick interval merge. But then, I notice, that there is no cs10 involved. The merge begins at cs11 and not cs10.
So, when I want cs10 included, I have to select cs9. But that is very unintuitive to me.
It get's even worse, when I click on the merge arrow afterwards and it shows me "Changeset interval (9 - 15)".
That's wrong, because there is no changeset 9 integrated. It's cs10 to cs15 involved.
So, maybe, it's a philosophical problem about how you start counting or look at intervals. But for me, it's totally logical to select these changesets, which are also part of a merge. So, when I see "interval cs10 to cs15", I naturally think cs10 is involved and part of the merge. I would not think, that cs10 is only a boundary and not involved in that merge.
Could you fix this please or make it optional for the users, how the interval should be interpreted? (Maybe there are others around, who may have no problem with the current interpretation.)
Christian Götz commented
Ah, ok. From the "diff concept" point of view, it is logical for me.
So, it is effectively like:
If you want to merge an interval of different changesets, at first you have to select the base/neutral changeset and then the last changeset with the wanted changes in the chain.
Or, another explanation:
If I do a single cherry pick of a changeset, for example cs15, it's the same as if would do an "interval cherry pick" from cs14 to cs15. So, for the single cherry pick, it's internally an "interval cherry pick", just with the previous changeset as default "base".
So, that's really clear to me now. So, you have not to change the logic behind it.
But maybe, you could make the visual appearance about that logic a bit more clear? Or give the user a hint about, how the selection of the changesets have to be done? (Maybe in a same fashion, like you give the user a hint about "base", "source" and "destination" when he has to do a manual merge.)
Actually what the interval does is (9, 15] as explained here: https://www.plasticscm.com/documentation/advanced-version-control-guide.html#interval-merge
There might be better ways to explain it, definitely, but we didn't find a better one :-S
It all goes to the diff concept: when you diff 11, you are actually diffing eleven vs 10, right?