GitPython
GitPython copied to clipboard
gitconfig: mnemonicPrefix conflict with create_patch
the regex:
https://github.com/gitpython-developers/GitPython/blob/6d09bb610932d6081da7a516f8e7215414d953e5/git/diff.py#L372
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)
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.
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')
So far a quick workaround is:
diff = ancestor_ref[0].diff(None, create_patch=True, **{'src-prefix':'a/','dst-prefix':'b/'})