fix(git): use git CLI in git_add to avoid GitPython index corruption bug#3156
fix(git): use git CLI in git_add to avoid GitPython index corruption bug#3156schuyler wants to merge 1 commit intomodelcontextprotocol:mainfrom
Conversation
GitPython's index.add() has a known bug that corrupts the git index when paths contain ./ prefixes or when . is included in the file list. The bug causes: - Files appearing with ./ prefix (e.g., ./index.md) - The .git directory itself being staged - Corrupted commits requiring git filter-repo to fix The previous implementation only handled the exact case of ["."] but failed to handle [".", "other.md"] or ["./README.md"]. This fix uses repo.git.add() (CLI wrapper) for all cases, which is consistent with how other git operations are implemented in this file and correctly handles all edge cases. References: - gitpython-developers/GitPython#375 - gitpython-developers/GitPython#292
|
Thanks for catching this and for the great reproduction! The GitPython Unfortunately, the change proposed here ( Your two new tests ( Closing on that basis — thanks again for the thorough investigation! (Triaged with help from Claude Code.) |
Description
GitPython's index.add() has a known bug that corrupts the git index when paths contain ./ prefixes or when . is included in the file list. The bug causes:
Motivation and Context
The previous implementation only handled the exact case of ["."] but failed to handle [".", "other.md"] or ["./README.md"]. This fix uses repo.git.add() (CLI wrapper) for all cases, which is consistent with how other git operations are implemented in this file and correctly handles all edge cases.
Testing
I have been using the
mcp-server-gitMCP to allow Claude to edit a private otterwiki. Prior to making this change locally, I was seeing corruption of the Git repository every few commits. Since applying the change about a week ago, I have been using the wiki with Claude every single day and have not seen a single error of any kind.Breaking Changes
None
Types of changes
Checklist
References