|
3 | 3 | from operator import itemgetter
|
4 | 4 | from typing import Callable, Dict, List, Optional
|
5 | 5 |
|
6 |
| -from commitizen import changelog, factory, git, out |
| 6 | +from commitizen import bump, changelog, factory, git, out |
7 | 7 | from commitizen.config import BaseConfig
|
8 | 8 | from commitizen.exceptions import (
|
9 | 9 | DryRunExit,
|
@@ -46,6 +46,10 @@ def __init__(self, config: BaseConfig, args):
|
46 | 46 | self.change_type_order = (
|
47 | 47 | self.config.settings.get("change_type_order") or self.cz.change_type_order
|
48 | 48 | )
|
| 49 | + self.version = args.get("version_range") |
| 50 | + self.tag_format = args.get("tag_format") or self.config.settings.get( |
| 51 | + "tag_format" |
| 52 | + ) |
49 | 53 |
|
50 | 54 | def _find_incremental_rev(self, latest_version: str, tags: List[GitTag]) -> str:
|
51 | 55 | """Try to find the 'start_rev'.
|
@@ -93,13 +97,24 @@ def __call__(self):
|
93 | 97 | if not tags:
|
94 | 98 | tags = []
|
95 | 99 |
|
| 100 | + end_rev = "HEAD" |
| 101 | + if self.version and self.tag_format: |
| 102 | + start_rev, end_rev = changelog.get_star_and_end_rev( |
| 103 | + tags, |
| 104 | + version=self.version, |
| 105 | + tag_format=self.tag_format, |
| 106 | + create_tag=bump.create_tag, |
| 107 | + ) |
| 108 | + |
96 | 109 | if self.incremental:
|
97 | 110 | changelog_meta = changelog.get_metadata(self.file_name)
|
98 | 111 | latest_version = changelog_meta.get("latest_version")
|
99 | 112 | if latest_version:
|
100 | 113 | start_rev = self._find_incremental_rev(latest_version, tags)
|
101 | 114 |
|
102 |
| - commits = git.get_commits(start=start_rev, args="--author-date-order") |
| 115 | + commits = git.get_commits( |
| 116 | + start=start_rev, end=end_rev, args="--author-date-order" |
| 117 | + ) |
103 | 118 | if not commits:
|
104 | 119 | raise NoCommitsFoundError("No commits found")
|
105 | 120 |
|
|
0 commit comments