You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b4bd52d
Browse filesBrowse the repository at this point in the historyBrowse files
fix(stats): preserve Unicode line separators in filenames
Port PR #2301's regression for U+0085, U+2028 and U+2029 in filenames
with `core.quotePath=false`. Both backends raised `ValueError` because
`Commit.stats` and `Stats._list_from_string()` treated those characters as
record separators in Git's output.
Split only at LF and ignore empty records, preserving filenames and empty
commit results. Keep the existing Gix filename-quoting CLI fallback; this
change adapts Git's output and does not implement native diff behavior.
Clarify that fallback in `doc/gix-backend.md` and record the user-visible fix.
The scripted fixture creates root, modified and empty commits through Git.
Direct NUL-delimited `git diff-tree --numstat` and `--name-status` queries
validate the expected names, counts and change types before the GitPython
assertions. The regression fails before the fix with both backends; all 42
commit/statistics tests and 21 subtests pass afterward on each backend.
Ruff lint/format, changed-source mypy, ShellCheck and `git diff --check` pass.
| Committer identity, `var`| Native process/config identity from `Repository.committer()`| Per-command identity overrides, other variables and normalization/identity errors; GIX-21 |
376
376
| Selected `set_object` / reference deletion, `update_ref`| Native ref edits with GitPython's existing validation | Strict create/CAS, branch-target validation, symbolic aliases other than HEAD, symbolic detachment, active-branch HEAD log, unchanged targets and log-message cleanup; GIX-9/10/21/24 |
377
377
| Tree/commit `Diffable.diff`| Raw change records and unambiguous exact renames | Patches, paths, index/worktree/root diff, inexact/ambiguous renames; GIX-11 |
378
-
|`Commit.stats`| Native Myers line counts, binary counts, first-parent tree comparison | Diff attributes, other algorithms, gitlinks, quoted filenames, large blobs; GIX-2/18 |
378
+
|`Commit.stats`| Native Myers line counts, binary counts, first-parent tree comparison | Diff attributes, other algorithms, gitlinks, non-ASCII or quoted filenames, large blobs; GIX-2/18 |
379
379
|`Repo.is_dirty`| Index/tree/worktree status, configured submodule checks and pathspecs | Custom/sparse indexes and non-root command directories |
380
380
|`Repo.untracked_files`| Native directory walk | Extra status options and non-root command directories |
381
381
|`Repo.ignored`| Native excludes with tracked-file suppression | Symlink/submodule traversal, unsupported path normalization, and unavailable path metadata |
0 commit comments