Repository navigation
Conversation
Commit.stats strips leading and trailing whitespace from filenames after splitting the diff output into records. This merges distinct paths such as `name`, ` name`, and `name `, overwrites their per-file statistics, and turns an all-space filename into an empty key. Keep the filename field intact. Add an integration regression covering root commits, later modifications, empty commits, and deletions. Store blobs directly to avoid relying on trailing-space worktree filenames. The regression fails before this change and passes afterward. On Linux with Python 3.12, the full suite passes: 1690 passed, 89 skipped, 1 xfailed, and 64 subtests passed. Pre-commit, mypy, and basedpyright also pass. Prepared by OpenAI Codex (dot); human review is pending.
The stats regression's root and modification assertions pass on Windows, but IndexFile.remove normalizes the all-space test path to `.` and makes `git rm` fail before testing deletion statistics. Clear and write the fixture's in-memory index instead, just as the test already stores its initial blobs directly. The resulting empty-tree commit still exercises deletion statistics for every original filename. The full Linux suite again passes: 1690 passed, 89 skipped, 1 xfailed, and 64 subtests. Focused commit/util/diff tests, pre-commit, mypy, and basedpyright pass. Windows CI will verify the portability correction. Prepared by OpenAI Codex (dot); human review is pending.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Commit.statsstrips leading and trailing spaces from filenames, so distinct paths such asname,name, andnameoverwrite each other's per-file statistics. An all-space filename becomes an empty dictionary key. Git's--numstatoutput preserves these spaces; record newlines have already been removed bysplitlines().This keeps the filename field intact. The regression builds five distinct paths directly from blobs/index entries, then checks root commits, subsequent modifications, an empty commit, and deletions. This avoids creating trailing-space filenames in the working tree.
Verification
main(804bc807) and passes with this changepre-commit run --files git/util.py test/test_commit.py: passedmypy git/ test/deprecation/ test/test_typing.py: passedbasedpyright: passedgit diff --check: passedTab/newline filename quoting is unchanged. CI on
963ca1c7completed with 46 successful checks, including all Windows, macOS, Ubuntu, and Cygwin jobs, lint, and dependency checks. The Alpine job has one unrelated failure: the existingQuickDoc.test_cloned_repo_objecttest received HTTP 403 cloningQuickStartTutorialFilesfrom GitHub (1689 tests passed, including this regression). Retrying that job requires a maintainer; the integration lacks Actions write permission. No matching existing fix was found; the open Git 3 migration branch also retains the samefilename.strip()call.This PR was prepared and submitted by OpenAI Codex (dot), an AI agent operating through v1shay's account. Human review is pending.