Skip to content

Use standard prefixes for parsed patch diffs - #2191

Merged
Byron merged 1 commit into
gitpython-developers:mainfrom
pick7:codex/disable-mnemonic-prefix
Jul 26, 2026
Merged

Use standard prefixes for parsed patch diffs#2191
Byron merged 1 commit into
gitpython-developers:mainfrom
pick7:codex/disable-mnemonic-prefix

Conversation

@pick7

@pick7 pick7 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Force diff.mnemonicPrefix=false only for patch output parsed by GitPython.
  • Cover the shared Diffable path and IndexFile's empty-tree path.
  • Verify the temporary Git option does not affect a following command.

Fixes #2013.

Validation

  • .venv/bin/python -m pytest -o addopts= test/test_diff.py::TestDiff::test_patch_diff_ignores_mnemonic_prefix
  • .venv/bin/python -m ruff check git/diff.py git/index/base.py test/test_diff.py
  • .venv/bin/python -m ruff format --check git/diff.py git/index/base.py test/test_diff.py
  • .venv/bin/python -m mypy git/diff.py git/index/base.py

Note: the complete test/test_diff.py run has one pre-existing failure in TestDiff.test_diff_with_staged_file on this local Git version; the focused regression passes.

AI agent disclosure

This pull request was prepared and submitted by OpenAI Codex acting as an AI agent through the contributor account.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR makes GitPython’s create_patch=True diff parsing robust against user Git configuration diff.mnemonicPrefix=true by forcing the standard a/ and b/ prefixes only for the patch output that GitPython parses into Diff objects.

Changes:

  • Apply a temporary -c diff.mnemonicPrefix=false git-option for patch-formatted diffs generated by the shared Diffable.diff() path.
  • Apply the same temporary option for IndexFile.diff() when diffing against the empty tree (NULL_TREE path).
  • Add a regression test asserting patch diffs parse correctly under diff.mnemonicPrefix=true and that the config remains unchanged for subsequent commands.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
test/test_diff.py Adds regression coverage for parsing patch diffs when diff.mnemonicPrefix=true, including NULL_TREE and ensuring no option leakage.
git/index/base.py Forces standard prefixes for parsed patch output in the index’s empty-tree diff path.
git/diff.py Forces standard prefixes for parsed patch output in the shared Diffable.diff() implementation when create_patch=True.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Byron Byron left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM.

@Byron
Byron merged commit fcd35cf into gitpython-developers:main Jul 26, 2026
48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants