Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3212eaa

Browse files
crai0Lee-W
authored andcommitted
feat(commit): add retry_after_failure config option and --no-retry flag
1 parent 8daca3f commit 3212eaa

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

‎commitizen/cli.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ def __call__(
123123
"action": "store_true",
124124
"help": "retry last commit",
125125
},
126+
{
127+
"name": ["--no-retry"],
128+
"action": "store_true",
129+
"default": False,
130+
"help": "skip retry if retry_after_failure is set to true",
131+
},
126132
{
127133
"name": "--dry-run",
128134
"action": "store_true",

‎commitizen/commands/commit.py‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ def __init__(self, config: BaseConfig, arguments: dict):
3333
self.arguments = arguments
3434
self.temp_file: str = os.path.join(
3535
tempfile.gettempdir(),
36-
"cz.commit{user}.backup".format(user=os.environ.get("USER", "")),
36+
"cz.commit%{user}%{project_root}.backup".format(
37+
user=os.environ.get("USER", ""),
38+
project_root=str(git.find_git_project_root()).replace("/", "%"),
39+
),
3740
)
3841

39-
def read_backup_message(self) -> str:
42+
def read_backup_message(self) -> str|None:
4043
# Check the commit backup file exists
4144
if not os.path.isfile(self.temp_file):
42-
raiseNoCommitBackupError()
45+
returnNone
4346

4447
# Read commit message from backup
4548
with open(self.temp_file, encoding=self.encoding) as f:
@@ -65,7 +68,7 @@ def prompt_commit_questions(self) -> str:
6568

6669
def __call__(self):
6770
dry_run: bool = self.arguments.get("dry_run")
68-
write_message_to_file = self.arguments.get("write_message_to_file")
71+
write_message_to_file: bool = self.arguments.get("write_message_to_file")
6972

7073
is_all: bool = self.arguments.get("all")
7174
if is_all:
@@ -78,9 +81,17 @@ def __call__(self):
7881
raise NotAllowed(f"{write_message_to_file} is a directory")
7982

8083
retry: bool = self.arguments.get("retry")
84+
no_retry: bool = self.arguments.get("no_retry")
85+
retry_after_failure: bool = self.config.settings.get("retry_after_failure")
8186

8287
if retry:
8388
m = self.read_backup_message()
89+
if m is None:
90+
raise NoCommitBackupError()
91+
elif retry_after_failure and not no_retry:
92+
m = self.read_backup_message()
93+
if m is None:
94+
m = self.prompt_commit_questions()
8495
else:
8596
m = self.prompt_commit_questions()
8697

‎commitizen/defaults.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class Settings(TypedDict, total=False):
3737
version_type: str | None
3838
tag_format: str
3939
bump_message: str | None
40+
retry_after_failure: bool
4041
allow_abort: bool
4142
allowed_prefixes: list[str]
4243
changelog_file: str
@@ -77,6 +78,7 @@ class Settings(TypedDict, total=False):
7778
"version_scheme": None,
7879
"tag_format": "$version", # example v$version
7980
"bump_message": None, # bumped v$current_version to $new_version
81+
"retry_after_failure": False,
8082
"allow_abort": False,
8183
"allowed_prefixes": [
8284
"Merge",

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /