Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MNG-7644] Fix version comparison ( .X1 < -X2 for any string qualifier x ), 3.8.x branch #930

Closed
wants to merge 1 commit into from

Conversation

sultan
Copy link
Contributor

@sultan sultan commented Dec 20, 2022

The current version parser does not treat .RC and -RC correctly:
actual : 1.0.0.RC1 > 1.0.0-RC2
expected : 1.0.0.RC1 < 1.0.0-RC2
 
because RC1 < RC2
how to fix : place a list item before qualifier

as a consequence for any string qualifier x:
previously:

  • 1.0.0.X1 > 1.0.0-X2
  • 1.0.X < 1.0.0.X

now:

  • 1.0.0.X1 < 1.0.0-X2
  • 1.0.X == 1-X == 1.0.0.X

Following this checklist to help us incorporate your
contribution quickly and easily:

  • Make sure there is a JIRA issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a JIRA issue. Your pull request should address just this issue, without
    pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [MNG-XXX] SUMMARY,
    where you replace MNG-XXX and SUMMARY with the appropriate JIRA issue.
  • Also format the first line of the commit message like [MNG-XXX] SUMMARY.
    Best practice is to use the JIRA issue title in both the pull request title and in the first line of the commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Run mvn clean verify to make sure basic checks pass. A more thorough check will
    be performed on your pull request automatically.
  • You have run the Core IT successfully.

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.

To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@sultan sultan changed the title [MNG-7644] Fix version comparison ( .RC1 < -RC2 ) [MNG-7644] Fix version comparison ( .RC1 < -RC2 ), 3.8.x branch Dec 20, 2022
@sultan sultan force-pushed the dot-3.8.x branch 2 times, most recently from 09043b2 to e5b1ecc Compare December 20, 2022 19:06
@michael-o michael-o self-requested a review December 20, 2022 20:51
@michael-o
Copy link
Member

michael-o commented Dec 20, 2022

Does this really only apply to RC or anything else which has the pattern dot/hyphen{item}{digit/number}?

@sultan
Copy link
Contributor Author

sultan commented Dec 20, 2022

Does this really only apply to RC or anything else which has the pattern dot/hyphen{item}{digit/number}?

it is intended to apply to all string qualifiers: dot/hyphen{string item}

@michael-o
Copy link
Member

Does this really only apply to RC or anything else which has the pattern dot/hyphen{item}{digit/number}?

it is intended to apply to all string qualifiers: dot/hyphen{string item}

Then please generalize the issue summary as well as the description and add more tests which depict that is general and not specific. Let's make this complete for master first and then I consent, then you can back port and save time.

@sultan sultan changed the title [MNG-7644] Fix version comparison ( .RC1 < -RC2 ), 3.8.x branch [MNG-7644] Fix version comparison ( .X1 < -X2 for any string qualifier x ), 3.8.x branch Dec 21, 2022
@sultan
Copy link
Contributor Author

sultan commented Dec 21, 2022

Does this really only apply to RC or anything else which has the pattern dot/hyphen{item}{digit/number}?

it is intended to apply to all string qualifiers: dot/hyphen{string item}

Then please generalize the issue summary as well as the description and add more tests which depict that is general and not specific. Let's make this complete for master first and then I consent, then you can back port and save time.

it's fair @michael-o, i updated the Jira and PRs/commits.
i hope its all ok now.
thank you very much for your time!

@@ -53,7 +53,8 @@
* </ul>
* Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
* </li>
* <li>a hyphen usually precedes a qualifier, and is always less important than something preceded with a dot.</li>
* <li>a hyphen usually precedes a qualifier, and is always less important than digits/number, for example
* 1.0.RC2 &lt; 1.0-RC3 &lt; 1.0.1 ; but prefer '1.0.0-RC1' over '1.0.0.RC1' </li>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be generalized as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@sultan sultan force-pushed the dot-3.8.x branch 3 times, most recently from 98a9989 to 45562cd Compare December 21, 2022 10:14
@michael-o
Copy link
Member

Merged.

@michael-o michael-o closed this Dec 21, 2022
@sultan
Copy link
Contributor Author

sultan commented Dec 23, 2022

@michael-o we may want to consider this a major change and reverting this one

@michael-o
Copy link
Member

@michael-o we may want to consider this a major change and reverting this one

Then docs need to be reverted as well, no?

@sultan
Copy link
Contributor Author

sultan commented Dec 23, 2022

@michael-o we may want to consider this a major change and reverting this one

Then docs need to be reverted as well, no?

the docs may need an update to explain how 3.x and 4.x treats the versions order differently

@michael-o
Copy link
Member

michael-o commented Dec 23, 2022

@michael-o we may want to consider this a major change and reverting this one

Then docs need to be reverted as well, no?

the docs may need an update to explain how 3.x and 4.x treats the versions order differently

Let's do the following: Keep the change with RC1/RC2 even 3.8.x with the docs in place and see whether there will be reports due to the change in behavior. If really someone complains I'd be willing to fix this regression and release 3.8.8 for this. Otherwise this edge case fix makes life much easier for others.

@sultan
Copy link
Contributor Author

sultan commented Dec 23, 2022

@michael-o we may want to consider this a major change and reverting this one

Then docs need to be reverted as well, no?

the docs may need an update to explain how 3.x and 4.x treats the versions order differently

Let's do the following: Keep the change with RC1/RC2 even 3.8.x with the docs in place and see whether will be reports due to the change in behavior. If really someone complains I'd be willing to fix this regression and release 3.8.8 for this. Otherwise this edge case fix makes life much easier for others.

Nice! thanks Michael

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants