397 lines · 32.8 KB · Markdown
RawDownload

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.4.0 (2022-11-21)

New Features (BREAKING)

  • upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn't more than a patch release as it should break nobody who is adhering to the MSRV, but let's be careful and mark it breaking.

    Note that git-features and git-pack are still on edition 2018 as they make use of a workaround to support (safe) mutable access to non-overlapping entries in a slice which doesn't work anymore in edition 2021.

Commit Statistics

  • 3 commits contributed to the release over the course of 2 calendar days.
  • 14 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • prepare changelogs prior to release (e4648f8)
    • Merge branch 'version2021' (0e4462d)
    • upgrade edition to 2021 in most crates. (3d8fa8f)

0.3.1 (2022-11-06)

New Features

  • add RefSpecRef::expand_prefix() method to avoid missing prefixes. The current implementation might cause refspecs to end up ignored as they don't have a prefix, and in protocol V2 it would then fail to add a ref-spec filter which causes them to be missed.

    With expand_prefix(), we assure that there are all possible prefixes that can contain partial names, similar to what git does.

Bug Fixes

  • HEAD may now return itself as prefix in RefSpecRef::prefix() and expanded_prefix(). Previously, the expanded prefix would be a list of possibilities, even though it's such a common case that we really want to avoid spamming the remote about it when asking for HEAD during clone for instance.

Commit Statistics

  • 12 commits contributed to the release over the course of 24 calendar days.
  • 27 days passed between releases.
  • 2 commits were understood as conventional.
  • 2 unique issues were worked on: #450, #571

Commit Details

view details
  • #450
    • improve docs for Instruction (911f68f)
    • HEAD may now return itself as prefix in RefSpecRef::prefix() and expanded_prefix(). (d53ddcd)
    • fix docs (9d0f31e)
    • add RefSpecRef::expand_prefix() method to avoid missing prefixes. (21b21b6)
  • #571
    • refactor (ef7467c)
    • assure sub-branches can be matched correctly (c9383c6)
  • Uncategorized
    • Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates (d071583)
    • prepare changelogs prior to release (423af90)
    • Merge branch 'main' into write-sparse-index (c4e6849)
    • Merge branch 'gix-clone' (def53b3)
    • Merge branch 'main' into gix-clone (91bf67a)
    • Merge branch 'fix-571' (2514334)

0.3.0 (2022-10-10)

New Features

  • RefSpec::allow_non_fast_forward() to get information about 'force' quickly.
  • RefSpecRef::prefix() to return the two-component prefix of a refspec's source. #(450)

Bug Fixes

  • RefSpecRef instruction uses the correct lifetime.

Changed (BREAKING)

  • remove lifetime of match_group::Fix, keeping RefSpec instances instead That lifetime unnecessarily complicated things and wasn't worth keeping due to being a premature optimization.

Commit Statistics

  • 12 commits contributed to the release over the course of 20 calendar days.
  • 20 days passed between releases.
  • 4 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Commit Details

view details
  • #450
    • RefSpec::allow_non_fast_forward() to get information about 'force' quickly. (d7f63a6)
    • RefSpecRef instruction uses the correct lifetime. (278ff7a)
  • Uncategorized
    • Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates (104d922)
    • prepare changelogs for release (d232567)
    • Merge branch 'clone' (507dc7e)
    • remove lifetime of match_group::Fix, keeping RefSpec instances instead (2a0a87a)
    • Another test to validate components must not be empty (b2c9af1)
    • Merge branch 'main' into new-http-impl (702a161)
    • make fmt (53acf25)
    • Merge branch 'fetch-pack' (3c49400)
    • RefSpecRef::prefix() to return the two-component prefix of a refspec's source. #(450) (6df179b)
    • Merge branch 'diff' (25a7726)

0.2.0 (2022-09-20)

New Features

  • Simple serialization for Instruction and RefSpecRef type. It's also a way to normalize input strings as there is only one way to serialize instructions, which themselves are already normalized towards what's possible.

Changed (BREAKING)

  • reject all invalid negative refspec patterns. Git is more lenient, but will then fail to match against such patterns which seems like avoidable surprising behaviour.
  • upgrade bstr to 1.0.1

Commit Statistics

  • 77 commits contributed to the release over the course of 22 calendar days.
  • 22 days passed between releases.
  • 3 commits were understood as conventional.
  • 2 unique issues were worked on: #450, #470

Thanks Clippy

Clippy helped 4 times to make code idiomatic.

Commit Details

view details
  • #450
    • A more efficient representation for validate::Fix (e819fc6)
    • Make specs in MatchGroup public to reduce API surface. (2a7df32)
    • Allow match_group::Fix to be cloned. (85c49ec)
    • fix match_group::Item to make it uniform with how we typically name refs (21420da)
    • remote todo with note about our current understanding (9dc7a3f)
    • Actually assure we don't try to write into the HEAD ref, which git avoids as well (1335618)
    • Allow 'HEAD' based refspecs to match correctly (7432a2b)
    • tests to show that empty remotes actually work (2fdec73)
    • another test which doesn't manage to trigger a certain message from git. (4f48095)
    • fully drop 'funny' names (f137d60)
    • A first version of the 'funny name' sanitization (c81e418)
    • frame for testing of fixes (9148102)
    • refactor (d37fd04)
    • all baseline specs are tested and pass (afc0a3d)
    • the first test to validate conflict reporting (aef0a46)
    • sketch of validation API along with test suite integration (70a765e)
    • refactor (547129e)
    • sketch Outcome type which can be used for later sanitization and validation. (53e17c1)
    • prepare first test for conflicts and validation (508a33a)
    • just-in-time deduplication of mappings (8ed5d01)
    • adjust expectations to make first exclusion tests work (6e1b19b)
    • reject all invalid negative refspec patterns. (4c4f821)
    • basic negation implementation along with first failure. (e4931d0)
    • first tests for multiple refspecs (77db112)
    • refactor (4c73a19)
    • refactor (00401be)
    • improved glob matching (eaf36e7)
    • basic glob matching. (a93628c)
    • type-system supprots glob matching (4b73d11)
    • more tests for simple 1:1 fetch and update specs (74de83c)
    • Make it easy to obtain the local and remote sides of RefSpecs (67506b1)
    • Don't reject object-id like heads on the receiving side. (6668c3f)
    • make object-ids in the source position type-safe (413051d)
    • prepare for dual-sided ref mapping to realize that it needs a special case. (7368fe4)
    • refactor (579e891)
    • support testing source-only object names (bb61c49)
    • preliminary matching of refs by name (426107f)
    • handle partial names as well (dc7f162)
    • generalize baseline assertion to support multiple input specs (b752e48)
    • first successful test (3625d5a)
    • top-level match-group loop without negation (c915a5f)
    • refactor to use a match-group instead. (4ba31c5)
    • not using a matchgroup right away seems like the wrong approach (7f3bc30)
    • actual expectation for first simple test (cec6905)
    • Get to the point where the matcher is invoked (cbbdf59)
    • Simple serialization for Instruction and RefSpecRef type. (abdf83f)
    • ground work for matcher tests (509764c)
    • tag specific tests (4f35485)
    • more tests to investigate conflict handling (192d4f7)
    • a more realistic sketch for Matcher, which will need a surrounding MatchGroup (dd1d824)
    • more robust baseline tests on windows (54ca267)
    • pares FETCH_HEAD (as specs without local sides); sketch Match type (44228a0)
    • restore full ref names for baseline (f6124db)
    • parse basline mapping (3000a14)
    • parse baseline reflist which serves as input to the matcher (fce877f)
    • frame for baseline for fetch-matching (2569da5)
    • upgrade bstr to 1.0.1 (99905ba)
    • prefer to represent instructions with Matchers (0887e2e)
    • more examples using fully spelled out object names as fetch destination (095a099)
    • get more clarity about git ls-remote and git fetch (1b15fe8)
    • a tiny sketch of a possible matching API (39d5ff3)
  • #470
    • update changelogs prior to release (caa7a1b)
  • Uncategorized
    • Release git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0 (f5c36d8)
    • Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates (29a043b)
    • make fmt (429cccc)
    • Merge branch 'filter-refs' (3773b92)
    • Merge branch 'filter-refs' (fd14489)
    • thanks clippy (74a5f22)
    • thanks clippy (016cd1f)
    • thanks clippy (b8ac13e)
    • thanks clippy (73b405f)
    • make fmt (535e967)
    • Merge branch 'main' into filter-refs-by-spec (1f6e5ab)
    • Merge branch 'fix-522' (5869e9f)
    • Release git-hash v0.9.9 (da0716f)
    • Merge branch 'main' into index-from-tree (bc64b96)
    • Merge branch 'main' into filter-refs-by-spec (cef0b51)

0.1.1 (2022-08-28)

Maintenance release without user-facing changes.

Commit Statistics

  • 4 commits contributed to the release over the course of 4 calendar days.
  • 4 days passed between releases.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #XXX

Commit Details

view details
  • #XXX
    • prepare changelogs prior to release (8c0bca3)
  • Uncategorized
    • Release git-object v0.20.3, git-ref v0.15.4, git-config v0.7.1, git-diff v0.18.0, git-traverse v0.16.3, git-pack v0.22.0, git-odb v0.32.0, git-url v0.7.3, git-transport v0.19.3, git-protocol v0.19.1, git-refspec v0.1.1, git-repository v0.23.0, safety bump 6 crates (85a3bed)
    • Release git-features v0.22.3, git-revision v0.4.4 (c2660e2)
    • Merge branch 'main' into filter-refs-by-spec (cfa1440)

0.1.0 (2022-08-24)

Chore

  • uniformize deny attributes
  • remove default link to cargo doc everywhere

Commit Statistics

  • 49 commits contributed to the release over the course of 18 calendar days.
  • 18 days passed between releases.
  • 2 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Thanks Clippy

Clippy helped 4 times to make code idiomatic.

Commit Details

view details
  • #450
    • assure ref-specs handle equality, ordering and hashing according to their instruction (b4bf7d0)
    • cleanup crate structure (f0163c9)
    • don't expose mode() as it's kind of messy and should be left as implementation detail (6278966)
    • improve docs (c695a7e)
    • add fuzz target and basic docs on how to run it (febf070)
    • Add fuzz target (62d721a)
    • more push-spec restrictions (bb992ac)
    • more detailed tests of what's allowed and where (57a6e69)
    • disallow excludes in push mode (9c280b2)
    • don't allow object hashes in excludes (b889953)
    • negative must not be empty (79e0eaf)
    • support for @ shortcut. (32d98e9)
    • and the entire test-suite passes (3fa52f8)
    • handle ref-name validation mostly correctly (d7c2789)
    • refactor (e8c072e)
    • tests causing all instrucitons (c23a21d)
    • tests for handling exclusions (c4499ce)
    • Better handling of special cases (c99f575)
    • basic validation and detection of patterns (e4227d6)
    • handle colon and empty on the right side (7afebb7)
    • support for deletion (966a9e9)
    • add include directive (701d46f)
    • first successful test for returning a refspec. (6e5bd5c)
    • sort out how expectations can be expressed in test suite (3f264af)
    • refactor (6713793)
    • sketch all possible instructions of fetch and push refspecs (0ba1b73)
    • run the baseline test and gather some information (5e4ee9b)
    • first few bits of error handling in parser (9c5fed2)
    • frame for basic parsing (b9a4bdc)
    • sketch data structure that should do the trick (5c823dc)
    • all baseline test cases from git's test-suite (362bd46)
  • Uncategorized
    • Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates (4974eca)
    • Merge branch 'remote-ls-refs' (39d585d)
    • Merge branch 'main' into remote-ls-refs (e2ee3de)
    • Merge branch 'docsrs-show-features' (31c2351)
    • uniformize deny attributes (f7f136d)
    • remove default link to cargo doc everywhere (533e887)
    • Merge branch 'main' into remote-ls-refs (c82bbfa)
    • prepare for release of git-repository (8aa5389)
    • Merge branch 'main' into remote-ls-refs (bd5f3e8)
    • Release git-date v0.0.3, git-actor v0.11.1, git-attributes v0.3.1, git-tempfile v2.0.3, git-object v0.20.1, git-ref v0.15.1, git-config v0.6.1, git-diff v0.17.1, git-discover v0.4.0, git-bitmap v0.1.1, git-index v0.4.1, git-mailmap v0.3.1, git-traverse v0.16.1, git-pack v0.21.1, git-odb v0.31.1, git-packetline v0.12.6, git-url v0.7.1, git-transport v0.19.1, git-protocol v0.18.1, git-revision v0.4.0, git-worktree v0.4.1, git-repository v0.21.0, safety bump 5 crates (c96473d)
    • Release git-hash v0.9.7, git-features v0.22.1 (232784a)
    • Merge branch 'main' into write-index-v2 (a938986)
    • Merge branch 'main' into remote-ls-refs (de61c4d)
    • thanks clippy (4bd747c)
    • thanks clippy (b9e1cdb)
    • Merge branch 'parse-refspec' (2ba338e)
    • thanks clippy (6c963b0)
    • thanks clippy (b62ee56)

0.0.0 (2022-08-05)

Initial release for name reservation.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Commit Details

view details
  • #450
    • prepare git-refspec changelog prior to release (3383408)
    • empty git-refspec crate for name reservation prior to implementation (871a3c0)
  • Uncategorized
    • Release git-refspec v0.0.0 (d406689)