Skip to content

gix-submodule v0.33.0

Choose a tag to compare

@Byron Byron released this 23 Jul 13:24
842bc44

Changed (BREAKING)

  • validate config value names internally and use AsBStrOpt for value pushes.
    This makes using the APIs much more convenient.

New Features (BREAKING)

  • make parsed configuration files lifetime-free
    Store parsed configuration data in a self-contained backing buffer, with
    event payloads represented as compact spans into it. This removes the
    input lifetime from File and Events, making parsed configurations
    easier to return, store, move, and combine.

    Expose data through lightweight EventRef, SectionRef, HeaderRef,
    and BodyRef views. This retains efficient borrowed access while keeping
    ownership details out of the primary API.

    • Unify parsing under Events::from_bytes() and remove
      from_bytes_owned().
    • Add Events::iter(), frontmatter(), and sections() for
      non-consuming traversal.
    • Return owned BString values from lookups, avoiding Cow handling.
    • Simplify optional typed lookups from Option<Result<T, E>> to
      Result<Option<T>, E>.
    • Accept common string and byte-string inputs through AsBStr and
      IntoBStringOpt.
    • Allow concise calls such as new_section("remote", "origin") without
      constructing Option<Cow<...>>.
    • Reduce mutable value and section handles to the lifetime of their
      active file borrow.

    Introduce explicit section ownership: Section is self-contained and
    can be removed, edited, and inserted into another file, while
    SectionRef and SectionMut provide borrowed access.

    Preserve original subsection spelling for serialization while retaining
    decoded names for lookup. Configuration equality now also compares
    section and value names case-insensitively, matching Git semantics.

    Add benchmarks covering section, value, subsection, and multi-value
    lookups across configurations of varying sizes.

Bug Fixes (BREAKING)

  • Adapt gix-submodule to lifetime-free configuration files
    Remove gix_config::File lifetime arguments throughout the public and internal
    submodule APIs. Consume the newly owned configuration values directly when
    validating paths, URLs, branches, and update modes.

    Additinoally, let Submodule::path() return BString instead of
    a Cow.

Commit Statistics

  • 12 commits contributed to the release.
  • 31 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 changelogs prior to release (cb6ec7d)
    • Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates (f0ec710)
    • Merge pull request #2725 from GitoxideLabs/gix-config-improvements (5982dfe)
    • Validate config value names internally and use AsBStrOpt for value pushes. (0887485)
    • Merge pull request #2722 from GitoxideLabs/reasons (c16b5a1)
    • Replace lint allowances with expectations (43ff87a)
    • Merge pull request #2667 from GitoxideLabs/lifetime-free-config-parser (55b5158)
    • Adapt gix-submodule to lifetime-free configuration files (f138664)
    • Make parsed configuration files lifetime-free (0e3b35b)
    • Merge pull request #2714 from GitoxideLabs/fix-credentials-parsing (cf3053a)
    • Release gix-path v0.12.2, gix-error v0.2.5, gix-utils v0.3.4, gix-date v0.15.6, gix-url v0.36.2, gix-credentials v0.38.2 (27aec47)
    • Merge pull request #2646 from GitoxideLabs/report (1b1541e)