Skip to content

fix(git): normalize git_log and git_show formatting across filtered and unfiltered queries - #4644

Open
teddiesloco wants to merge 1 commit into
modelcontextprotocol:mainfrom
teddiesloco:fix/git-log-format-and-representation
Open

fix(git): normalize git_log and git_show formatting across filtered and unfiltered queries#4644
teddiesloco wants to merge 1 commit into
modelcontextprotocol:mainfrom
teddiesloco:fix/git-log-format-and-representation

Conversation

@teddiesloco

Copy link
Copy Markdown

Summary

Fixes the schema and formatting asymmetry between filtered (start_timestamp / end_timestamp) and unfiltered calls in git_log, as well as git_show.

Root Cause

  1. Repr vs Plain String: In unfiltered git_log and git_show, commit.hexsha!r and commit.message!r were used, producing quoted strings like Commit: 'b9fd86...' and Message: 'feat: ...'. In contrast, the timestamp-filtered branch produced unquoted Commit: b9fd86....
  2. Author Format Asymmetry: Filtered queries produced Author: Name <email> or plain author name, whereas unfiltered queries produced Author: <git.Actor "Name <email>">.
  3. Date Format Asymmetry: Filtered queries used git CLI's human-readable format while unfiltered queries used Python datetime object string.
  4. Delimiter Safety: Date-filtered git log now uses ASCII Unit/Record Separators (%x1e / %x1f) instead of splitting by raw newlines (\n), preventing multi-line commit messages from corrupting the parsed log entry count.

Fix

  • Standardized both code paths to output clean unquoted Commit: <sha>, Author: Name <email>, ISO-8601 Date: <iso_datetime>, and clean Message: <message>.
  • Added Unit Separator delimiters in git log command to handle arbitrary multi-line commit subjects safely.
  • Added regression test test_git_log_schema_consistency asserting schema uniformity across filtered and unfiltered queries.

Verification

  • Ran full test suite via uv run pytest tests/ -q (43/43 PASS).
  • Verified monorepo build (npm run build clean across all workspace packages).

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.

1 participant