Chore
- Stabilize fixtures on Windows
-
Normalize the precomputed diff fixture assets to LF before writing blobs,
populating the index, and creating commits. Git for Windows may check these
assets out with CRLF, which changes their object IDs and adds carriage returns
to index paths, causing fixture setup to fail atgit mv cli c. -
Prevent Git Bash from rewriting revision arguments before Git sees them, and
normalize the two pathspec baseline cases where Git for Windows applies native
path validation to repository-format paths. Exclude a glob baseline whose
backslash behavior is specific to Git for Windows rather than Git paths. -
Generate pathological .gitmodules entries as configuration data instead
of trying to create module directories whose names cannot be represented
on Windows. Use Git Bash bundled Perl for binary fixture construction so
regeneration does not depend on a separately installed Python interpreter. -
Also pass a literal carriage return to sed through Bash ANSI-C quoting when
normalizing the jj diff assets. Unlike GNU sed, BSD sed does not interpret
backslash-r in a single-quoted expression, so the previous spelling could remove
a trailing letter r on macOS instead of stripping CRLF endings.
-
Bug Fixes
-
match Git's pathspec attribute syntax
gix-pathspec reused the attribute-file tokenizer even though Git's pathspec attr
grammar separates requirements only on spaces and rejects values attached to !/-
requirements. This made tabs and carriage returns into unintended separators and
accepted !a=b and -a=b.Parse pathspec attribute requirements according to their own grammar while still
allowing the builtin_* namespace for pathspec matching.Git baseline: git 2.50.1 and /Users/byron/dev/github.com/git/git at cf5497b14c,
notably pathspec.c parse_pathspec_attr_match(). -
ignore empty keywords in pathspec magic, like Git does
Git'sparse_long_magic()inpathspec.cskips zero-length keywords
viaif (!len) continue;, so forms like:(top,),:(,top),
:(top,,icase),:(,),:(,,),:(icase,)and:(attr:someAttr,)
are all valid pathspecs to Git. gitoxide's parser rejected them with
InvalidKeywordinstead.Two changes fix the divergence:
parse_long_keywords's closure now returns early withOk(())when
the keyword is empty, mirroring Git's skip.split_on_non_escaped_charis rewritten to scan byte-by-byte like
Git'sstrcspn_escaped(): a backslash consumes the following byte,
and a separator at index 0 is now visible. The previouswindows(2)
loop could never see a separator at index 0, which is why:(,top)
was reported as a single invalid keyword instead of an empty one
followed bytop.
Verified against real git 2.52.0 with a 32-input differential battery
(32/32 agree), plus new coverage intests/parse/valid.rsand
tests/fixtures/parse_baseline.sh.
Commit Statistics
- 11 commits contributed to the release over the course of 30 calendar days.
- 30 days passed between releases.
- 3 commits were understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Update manifests prior to release (ebe9095)
- Merge pull request #2883 from GitoxideLabs/attributes-correctness (33058e8)
- Match Git's pathspec attribute syntax (0f99ede)
- Merge pull request #2880 from ameyypawar/pathspec-empty-keywords (270fd48)
- Review (7ab45a7)
- Ignore empty keywords in pathspec magic, like Git does (c385696)
- Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing (cc3ee80)
- Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 (ab4fcb0)
- Merge pull request #2830 from GitoxideLabs/fix-jj-test-on-windows (82711e1)
- Stabilize fixtures on Windows (75444cb)
- Merge pull request #2812 from GitoxideLabs/report-july (ae8845a)