-
-
Notifications
You must be signed in to change notification settings - Fork 299
feat(bump_rule): add BumpRule, VersionIncrement, Prerelease Enum #1518
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
base: v4-9-0-test
Are you sure you want to change the base?
feat(bump_rule): add BumpRule, VersionIncrement, Prerelease Enum #1518
Conversation
bb305ad
to
8a6c84f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## v4-9-0-test #1518 +/- ##
==============================================
Coverage ? 98.39%
==============================================
Files ? 59
Lines ? 2737
Branches ? 0
==============================================
Hits ? 2693
Misses ? 44
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
8a6c84f
to
8dd8d42
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is definitely a great pull request that cleans up a lot of legacy code. However, we need to be cautious about maintaining backward compatibility. We can likely add some of the logic incrementally while keeping compatibility for a few minor versions. After that, we can bump the major version and remove the compatibility handling code.
commitizen/bump_rule.py
Outdated
|
||
|
||
class ConventionalCommitBumpRule(BumpRule): | ||
_BREAKING_CHANGE_TYPES = set(["BREAKING CHANGE", "BREAKING-CHANGE"]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_BREAKING_CHANGE_TYPES = set(["BREAKING CHANGE", "BREAKING-CHANGE"]) | |
_BREAKING_CHANGE_TYPES = {"BREAKING CHANGE", "BREAKING-CHANGE"} |
commitizen/commands/bump.py
Outdated
return bump.find_increment(commits, regex=bump_pattern, increments_map=bump_map) | ||
return VersionIncrement.get_highest_by_messages( | ||
(commit.message for commit in commits), | ||
lambda x: self.cz.bump_rule.get_increment(x, is_major_version_zero), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this might be a breaking change for other non-standard cz
s
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We'll need a way to keep backward compatibility or move it to 5.0.0 instead (but that would be a pity since the PR looks os good)
CHANGELOG_FORMAT = "markdown" | ||
|
||
BUMP_PATTERN = r"^((BREAKING[\-\ ]CHANGE|\w+)(\(.+\))?!?):" | ||
BUMP_MAP = OrderedDict( | ||
BUMP_MAP = dict( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess we'll be able to remove them in the next major version?
83c02fe
to
650c720
Compare
bb61b44
to
9cacfcb
Compare
Can we do squash rebase on this PR when it is ready for merge? |
yep, I can do that |
Related issue: #129
Original PR: #1431
Description
Please see
bump_rule.py
,bump.py
,cz/base.py
,version_scheme.py
andcommands/bump.py
(~350 lines).The rest 1000+ lines are just tests and renaming.
CustomBumpRule
.Simplified code.SemVerIncrement
and replaceMAJOR
,MINOR
,PATCH
with the Enum.Prerelease
is Enum.find_increment
logic inSemVerIncrement.get_highest_by_messages
.find_increment
was the combination of 2 features: "finding the highest semantic version increment" and "parsing the semantic version increment from each git commit message".Checklist
Code Changes
poetry all
locally to ensure this change passes linter check and testsDocumentation Changes
poetry doc
locally to ensure the documentation pages renders correctlyExpected Behavior
Steps to Test This Pull Request
Additional Context