Visitar URL original
gitconfig: mnemonicPrefix conflict with create_patch · Issue #2013 · gitpython-developers/GitPython · GitHub
Skip to content

gitconfig: mnemonicPrefix conflict with create_patch #2013

Description

the regex:

[ ](?P<a_path_fallback>"?[ab]/.+?"?)[ ](?P<b_path_fallback>"?[ab]/.+?"?)\n

is not able to match the diff generated if this flag is enabled in ~/.gitconfig:

[diff]
        mnemonicPrefix = true

because it is expecting [ab]/ as folder prefix for the diff but with mnemonicPrefix enabled it become [wc]/

Diff without mnemonicPrefix

diff --git a/.vscode/launch.json b/.vscode/launch.json
index xxxxxxx..xxxxxxxx
--- a/.vscode/launch.json
+++ b/.vscode/launch.json

Diff with mnemonicPrefix = true

diff --git c/.vscode/launch.json w/.vscode/launch.json
index xxxxxxx..xxxxxxxx
--- c/.vscode/launch.json
+++ w/.vscode/launch.json

Quick Test

repo = git.Repo('.')
branch_ref = repo.head
ancestor_ref = repo.merge_base(branch_ref, repo.refs["main"])
diff = ancestor_ref[0].diff(None, create_patch=True)
print(diff)

Activity

  1. Byron commented on Mar 12, 2025

    @Byron
    Member

    Thanks a lot for reporting!

    To fix this, GitPython should control for this flag and turn it off when invoking Git, i.e. with git -c mnemonicPrefix=false.

  2. ceccopierangiolieugenio commented on Mar 13, 2025

    @ceccopierangiolieugenio
    Author

    thanks @Byron, is it there a workaround I can use in the meantime?
    something like:

    diff = ancestor_ref[0].diff(None, create_patch=True, c='diff.mnemonicPrefix=false')
  3. ceccopierangiolieugenio commented on Mar 13, 2025

    @ceccopierangiolieugenio
    Author

    So far a quick workaround is:

    diff = ancestor_ref[0].diff(None, create_patch=True, **{'src-prefix':'a/','dst-prefix':'b/'})
  4. added theissue type on Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions