This commit is contained in:
Derrick Hammer 2025-05-13 16:48:46 -07:00 committed by GitHub
commit 929f58f645
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 44 additions and 4 deletions

View file

@ -398,6 +398,12 @@ def get_parser(default_config_files, git_root):
##########
group = parser.add_argument_group("Git settings")
group.add_argument(
"--auto-commit-message",
action=argparse.BooleanOptionalAction,
default=True,
help="Enable/disable automatic LLM commit message generation for auto-commits and '/commit' without message.",
)
group.add_argument(
"--git",
action=argparse.BooleanOptionalAction,

View file

@ -335,6 +335,7 @@ class Coder:
file_watcher=None,
auto_copy_context=False,
auto_accept_architect=True,
auto_commit_message=True,
):
# Fill in a dummy Analytics if needed, but it is never .enable()'d
self.analytics = analytics if analytics is not None else Analytics()
@ -348,6 +349,7 @@ class Coder:
self.auto_copy_context = auto_copy_context
self.auto_accept_architect = auto_accept_architect
self.auto_commit_message = auto_commit_message
self.ignore_mentions = ignore_mentions
if not self.ignore_mentions:
@ -434,6 +436,7 @@ class Coder:
fnames,
None,
models=main_model.commit_message_models(),
auto_commit_message=self.auto_commit_message,
)
except FileNotFoundError:
pass

View file

@ -74,6 +74,7 @@ class GitRepo:
subtree_only=False,
git_commit_verify=True,
attribute_co_authored_by=False, # Added parameter
auto_commit_message=True,
):
self.io = io
self.models = models
@ -86,6 +87,7 @@ class GitRepo:
self.attribute_commit_message_author = attribute_commit_message_author
self.attribute_commit_message_committer = attribute_commit_message_committer
self.attribute_co_authored_by = attribute_co_authored_by # Assign from parameter
self.auto_commit_message = auto_commit_message
self.commit_prompt = commit_prompt
self.subtree_only = subtree_only
self.git_commit_verify = git_commit_verify
@ -208,10 +210,11 @@ class GitRepo:
if message:
commit_message = message
else:
user_language = None
if coder:
user_language = coder.get_user_language()
commit_message = self.get_commit_message(diffs, context, user_language)
if coder and self.auto_commit_message:
user_language = coder.get_user_language() if coder else None
commit_message = self.get_commit_message(diffs, context, user_language)
else:
commit_message = None
# Retrieve attribute settings, prioritizing coder.args if available
if coder and hasattr(coder, "args"):

View file

@ -1433,6 +1433,34 @@ This command will print 'Hello, World!' to the console."""
# (because user rejected the changes)
mock_editor.run.assert_not_called()
def test_auto_commit_message_flag(self):
with GitTemporaryDirectory():
repo = git.Repo()
fname = Path("test.txt")
fname.touch()
# Test with auto_commit_message=True (default)
io = InputOutput(yes=True)
coder = Coder.create(
self.GPT35,
"diff",
io=io,
fnames=[str(fname)],
auto_commit_message=True,
)
assert coder.repo.auto_commit_message is True
# Test with auto_commit_message=False
io = InputOutput(yes=True)
coder = Coder.create(
self.GPT35,
"diff",
io=io,
fnames=[str(fname)],
auto_commit_message=False,
)
assert coder.repo.auto_commit_message is False
if __name__ == "__main__":
unittest.main()