#crates #index #diff

crates-index-diff

Learn what's changed in the crates.io index

45 stable releases (16 major)

16.0.1 Feb 21, 2023
15.0.2 Dec 5, 2022
15.0.1 Nov 26, 2022
14.0.0 Nov 21, 2022
0.1.0 Dec 25, 2016

#63 in Development tools

Download history 176/week @ 2022-11-27 115/week @ 2022-12-04 162/week @ 2022-12-11 140/week @ 2022-12-18 163/week @ 2022-12-25 72/week @ 2023-01-01 99/week @ 2023-01-08 94/week @ 2023-01-15 102/week @ 2023-01-22 192/week @ 2023-01-29 148/week @ 2023-02-05 146/week @ 2023-02-12 315/week @ 2023-02-19 176/week @ 2023-02-26 160/week @ 2023-03-05 46/week @ 2023-03-12

705 downloads per month
Used in 3 crates (2 directly)

MIT license

130KB
636 lines

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.

16.0.1 (2023-02-21)

Bug Fixes

  • make DependencyKind publicly accessible Previously it was used as field within an exported type, but it couldn't be used directly.

Commit Statistics

  • 1 commit contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • make DependencyKind publicly accessible (8d7b7b6)

16.0.0 (2023-02-21)

Bug Fixes (BREAKING)

  • upgrade from git-repository to gix This change renames the public re-export from git to gix as well for consistency.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v16.0.0 (9d17c5a)
    • upgrade from git-repository to gix (8082588)

15.0.2 (2022-12-05)

Bug Fixes

  • Index::peek_changes_ordered() now actually provides ordered changes.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v15.0.2 (7ea9dda)
    • Index::peek_changes_ordered() now actually provides ordered changes. (44a5579)

15.0.1 (2022-11-26)

Bug Fixes

  • correctly configure 'serde' features of dependencies. Due to surprising an to me still quite unclear behaviour cargo will turn on the serde features in the hex and smartstring dependencies when building it locally from a repository clone, but won't do it when building the crates-io version of the crate after adding it as dependency.

    This fixes the issue by correctly configuring it the serde feature.

Commit Statistics

  • 5 commits contributed to the release over the course of 3 calendar days.
  • 3 days passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #33

Commit Details

view details
  • #33
    • correctly configure 'serde' features of dependencies. (c915992)
  • Uncategorized
    • Release crates-index-diff v15.0.1 (a6b40e1)
    • Merge branch 'fix-build' (57ca8f0)
    • a failing test to reproduce #33 (8bfd04d)
    • fix stress test (9afe15b)

15.0.0 (2022-11-22)

This release adds support for obtaining changes in the correct order by automatically looking at changes one commit at a time while handling squashed indices gracefully. It take about 20 seconds to catch up with all commits done in the crates index for 2 whole days and takes much longer than a similar unorderd acquisition of changes, but should be well worth it in situations where changes are fetched more often than that.

The baseline validation to assure correctness was improved to also assert the yanked state of crates. Furthermore, it is regularly run by CI, on the real crates-index, and in a more realistic manner mixing both unordered and ordered change requests.

The API is mostly the same, but has a few breaking changes to deal with order selection.

Last but not least, the user can now configure the HTTP backend to use, which allows for a pure-Rust build as well.

Bug Fixes

  • allow to configure the http transport layer in git-repository. This way the user of the library has a choice to activate any of these features:

    • http-curl (default) - use curl and a lot of C dependencies for HTTP/HTTPS. But also support advanced HTTP options.
  • http-request - use reqwest for http and https, which currently doesn't support any options.

Chore

  • a pipeline to validate basic assumptions are stil fulfilled. Running stress-test like baseline tests regularly should help us assure that crates-index-diff operates as it should against a real crates-index.

New Features

  • baseline validation now validates ordered and unordered mode.
  • greatly improve performance and realism of baseline-atomic test. We now set a fixed amount of 'big' steps along with one of those chunks being a range where the step-size is one commit at a time, which might be the way changes are obtained in the future.
  • baseline also validates the yanked status. That way we assure that the state we are interested in is indeed communicated perfectly through the events we emit.

New Features (BREAKING)

  • Support for in-order changes via changes_between_ancestor_commits(). This improvement also makes available an enum to select Order in higher-level methods like peek_changes_with_options().

    We also add peek_changes_ordered() and changes_ordered() for convenience.

Commit Statistics

  • 9 commits contributed to the release.
  • 6 commits were understood as conventional.
  • 1 unique issue was worked on: #30

Commit Details

view details
  • #30
    • allow to configure the http transport layer in git-repository. (c3cff88)
    • prepare changelog (b887560)
    • baseline validation now validates ordered and unordered mode. (87e49b5)
    • greatly improve performance and realism of baseline-atomic test. (81c6dd2)
    • baseline also validates the yanked status. (4dd4a4c)
  • Uncategorized
    • Release crates-index-diff v15.0.0 (50eed5b)
    • Merge branch 'baseline-improvements' (a80c7fa)
    • Support for in-order changes via changes_between_ancestor_commits(). (133f2f5)
    • a pipeline to validate basic assumptions are stil fulfilled. (d91afc9)

14.0.0 (2022-11-21)

A massive release that increases performance up to 10x for diffing repositories[^1] and correctness at the same time. This release wouldn't have been possible without the herculean efforts of Pascal Kuthe and I am grateful for his contribution. Thank you!

[^1]: Needs to build with git-repository/max-performance and setup a pack cache, for example with GITOXIDE_PACK_CACHE_MEMORY=1g <you-application>

Other

  • try to rewrite delegate to be map based… …but besides completely failing the normalization test which I don't understand, it also doesn't manage to get the correct amount of versions.
  • try to chunk up baseline, but changes do not line up. When stepping through the changes in multiple steps, we end up with more crates then there are even though we identify them by checksum and consider deletions. Yanking doesn't remove them from the iteration either.

New Features

  • a max-performance feature to tune git-repository. The performance difference is rather drastic at about 2.5x, and definitely worth having if there is no compatibility issue due to shared C dependencies in the same binary.

    Additionally we setup the makefile to use big object caches to avoid having to decompress the same object too often, accelerating the diffing process about 4x, for a total of 10x performance boost.

Changed (BREAKING)

  • Change::Deleted variant now has versions field to include all deleted versions. That way it doesn't degenerate any information, previously the exact version information was lost.

    Not doing so helps to be able to reproduce the current state by aggregating all changes.

New Features (BREAKING)

  • Reduce heap-allocations CrateVersion type and sub-types. This improves performance slightly when dealing with a lot of versions, like when all versions are obtained from the beginning of time.

Commit Statistics

  • 22 commits contributed to the release over the course of 3 calendar days.
  • 3 days passed between releases.
  • 5 commits were understood as conventional.
  • 1 unique issue was worked on: #26

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #26
    • refactor (b42ac1e)
    • revert previous to FAILed commits (3b52cfd)
    • try to rewrite delegate to be map based… (4d53b04)
    • try to chunk up baseline, but changes do not line up. (c0c01bb)
    • refactor (097209c)
    • Now the baseline result is the same. (02cdb2e)
    • make baseline work with CI (b9a1850)
    • a baseline test which shows that we cannot reproduce the status quo with changes just yet. (3fcf96b)
    • Change::Deleted variant now as versions to include all deleted versions. (b538ad6)
    • Reduce heap-allocations CrateVersion type and sub-types. (f9be536)
    • layout baseline for exhaustive test against the latest available index (7e9d3cd)
  • Uncategorized
    • Release crates-index-diff v14.0.0 (dfaf1be)
    • prepare changelog prior to release (a93ba40)
    • Merge branch 'fix-diff' (ec9842a)
    • refactor (bd3bc22)
    • remove unnecessary unsafe code (1b5684f)
    • a max-performance feature to tune git-repository. (6f5b12a)
    • improve baseline tests to be more practical (bae80b0)
    • add baseline tests that steps trough each commit individually (a377ca4)
    • perform an unordered comparison instead of using a linear edit-sequence (8256cbb)
    • Merge branch 'complete-baseline' (61c6272)
    • thanks clippy (249d141)

13.0.3 (2022-11-18)

Bug Fixes

  • assure differences are handled exhaustively. Previously it was possible to have multiple diffs in one crate distributed over multiple commits to rightfully show up as multiple hunks of modified and added lines only register the modified lines, not the new ones (or the deleted ones for that matter).

    This would cause updates or removals to be missed.

    Now hunks of changes are exhaused properly, fixing the issue.

Commit Statistics

  • 9 commits contributed to the release.
  • 9 days passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #26

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details

13.0.2 (2022-11-08)

Features

  • Switch diff implementation to imara-diff for performance, but also to get off the broken git-repository v0.25 release.

Commit Statistics

  • 10 commits contributed to the release.
  • 28 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v13.0.2 (3708131)
    • prepare changelog prior to release (adecda5)
    • Merge branch 'git-repository-upgrade' (b28b7ca)
    • upgrade to git-repository v0.27 (377065e)
    • all tests are green (6b47427)
    • one more test bytes the dust, but… (62cb6eb)
    • fix most of the tests (276e726)
    • A first stab at getting the diff back to work with imara-diff (5573529)
    • try to rewrite explicit trait impl as closure, same lifeimte issues. (2809c75)
    • upgrade to git-repoitory v0.26, fail to make diff compile. (3f47ec3)

13.0.1 (2022-10-11)

Bug Fixes

  • rename init::Error2 to init::Error. This name was left by mistake and shouldn't have made it into the release.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v13.0.1 (acd06a1)
    • rename init::Error2 to init::Error. (a6975ce)

13.0.0 (2022-10-10)

This release drops git2 in favor of gitoxide.

Important note for users of ssh:// index urls

Advanced git2 based credential configuration isn't supported anymore until gitoxide catches up. It generally implements all configuration options that are relevant for git and fully implements HTTP based authentication, but is probably lacking in regard to non-default ssh configuration.

If that's a problem, prefer staying with the v12.X line.

Changed (BREAKING)

  • remove git2 in favor of gitoxide. gitoxide is now used for cloning and fetching as well.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v13.0.0 (2b08485)
    • prepare changelog prior to release (35b1ce7)
    • Merge branch 'remove-git2' (ab529ad)
    • switch to released version of git-repository (v0.25) (533bfab)
    • fix makefile (7cede70)
    • remove git2 in favor of gitoxide. (4cedf27)
    • all tests pass, time to remove git2 (6975d67)
    • use gitoxide based cloning on demand in tests, one failure (1774f94)
    • Add a way to clone using gitoxide without removing git2 just yet. (878abe9)
    • Add fetch_changes_with_options() using gitoxide (900ae56)
    • Use gitoxide for fetching in test (00e6875)
    • sketch a new peek method that uses gitoxide to fetch things (759ff30)

12.1.0 (2022-09-29)

New Features

  • re-export git-repository as git This makes type conversions possible where needed.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v12.1.0 (ad2f6d9)
    • re-export git-repository as git (74866b4)

12.0.0 (2022-09-29)

This release is v11.2, but correctly indicates the breaking change introduced by upgrading git-repository to v0.24, which fixes #23.

Commit Statistics

  • 3 commits contributed to the release.
  • 8 days passed between releases.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #23

Commit Details

view details
  • #23
    • update changelog prior to release (6017b3f)
    • update version to 12.0 to indicate breaking change via git-repository (1fcac4b)
  • Uncategorized
    • Release crates-index-diff v12.0.0 (ee27555)

11.2.0 (2022-09-20)

New Features

  • upgrade to git-repository v0.24 to simplify diff implementation.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v11.2.0 (7e420d2)
    • Use the latest diff API to obtain line diffs. (300e966)
    • upgrade to git-repository v0.24 to simplify diff implementation. (9159397)
    • remove accidentally added example (cd23a28)

11.1.6 (2022-09-14)

Bug Fixes

  • Ignore directory deletions. Previously deleted directories would be picked up as crate deletions, with the crate name being the deleted directory.

    Now only file deletions will be assumed to be crate deletions.

Commit Statistics

  • 2 commits contributed to the release.
  • 11 days passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #20

Commit Details

view details
  • #20
    • Ignore directory deletions. (4ce0021)
  • Uncategorized
    • Release crates-index-diff v11.1.6 (3a1ecd1)

11.1.5 (2022-09-02)

Bug Fixes

  • Ignore all changed files with an extension. There are non-crate files that as far as we know all have file extensions, as opposed to the crate files we are interested in, which do not.

    Thus skipping all files with extension helps us to get past the initial commit which includes such files, like .github/*.yml.

    Related to https://github.com/rust-lang/docs.rs/pull/1807#issuecomment-1235158502

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v11.1.5 (516a779)
    • Ignore all changed files with an extension. (8af61f2)

11.1.4 (2022-09-02)

Bug Fixes

Commit Statistics

  • 3 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v11.1.4 (9d41b20)
    • improve error descriptions and provide details when decoding of crate versions fails. (ab6e46c)
    • fix rev-spec (83e91f5)

11.1.3 (2022-09-01)

Bug Fixes

  • switch git2 back to v0.14 - v0.15 is a breaking change… …for everyone who uses git2 as direct dependency as well due to libgit2-sys.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v11.1.3 (d46402a)
    • switch git2 back to v0.14 - v0.15 is a breaking change… (a430c03)

11.1.2 (2022-09-01)

Bug Fixes

  • make fetches work again by using safe-performance mode of git-repository. This fixes the 'zlib stream broken' issue when fetching crates.io changes which was caused by git-repository configuring for max-performance by default, which affects a crate used by git2 as well. For some reason, changing to zlib-ng as backend wasn't taken kindly by libgit2 causing it to fail after a short while of receiving a pack from the remote.

    The fix avoids making such modifications to the zlib crate, allowing both crates, git-repository and git2 to co-exist in the same dependency tree.

Commit Statistics

  • 7 commits contributed to the release.
  • 1 day passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v11.1.2 (5b2e3ce)
    • Merge branch 'fix-zlib-stream-error' (ac83e7a)
    • make fetches work again by using safe-performance mode of git-repository. (23a66b9)
    • refactor (e93f1c6)
    • Upgrade to latest git2 version (7616db2)
    • properly parameterize script so it's obvious what is what (02f715e)
    • Make test-lookup independent of prior commits (4b7fc6e)

11.1.1 (2022-08-31)

Bug Fixes

  • Consider all crates yanked if 'yanked = true'. Previously, due to a missing test, a bug snuck in that would assume that all lines in an added files must be new versions, marking them as Change::Added. This ignored the fact that any line could also carry a yanked crate, misrepresenting them.

    This is now fixed, and yanked crates generally show up as Change::Yanked.

    One might take this as a hint that diffentiating by yank status might not be that useful after all as it doesn't scale that well. Maybe a future version changes how Change is represented.

Commit Statistics

  • 3 commits contributed to the release.
  • 1 day passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #19

Commit Details

view details
  • #19
    • Consider all crates yanked if 'yanked = true'. (28de9d4)
    • Add failing test (89378e1)
  • Uncategorized
    • Release crates-index-diff v11.1.1 (708288f)

11.1.0 (2022-08-30)

New Features

  • make the name of the remote configurable. This is primarily used in testing and we try even harder to make it fail to deal with squashed remote references, but it seems to work fine.

    For good measure, now using + in the refspec to assure it forces an update.

Bug Fixes

  • assure refs can be reet when fetching to support squashing. Previously tests didn't replicate this, now they do.

Commit Statistics

  • 5 commits contributed to the release over the course of 1 calendar day.
  • 1 day passed between releases.
  • 2 commits were understood as conventional.
  • 1 unique issue was worked on: #16

Commit Details

view details
  • #16
  • Uncategorized
    • Release crates-index-diff v11.1.0 (01ca770)
    • make the name of the remote configurable. (09489ab)
    • assure refs can be reet when fetching to support squashing. (cdcac41)
    • Add test to validate we can deal with squashed indices (ed4ba38)

11.0.0 (2022-08-28)

Changed (BREAKING)

  • Use gitoxide Repository instead of git2::Repository This comes with plenty of changes to the API of the last_seen_reference() and to the lower-level methods that take object ids (now gix::hash::ObjectId.

    Note that git2 is still used internally for fetching and cloning. This change was made to assure that at no time there are two open repositories (once for git2, once for gitoxide), as this has the potential to double resource usage for file handles.

  • move CloneOptions into index module. The index module is now public for that reason.

Commit Statistics

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

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #16
    • update to latest release of gitoxide (23e14af)
    • and normalization works now (eb148e5)
    • first stab at normalization can reduce 245 version, but… (ae3f971)
    • adapt to changes in git-repository (68ff142)
    • remove git2 verion of the diff algorithm (371b512)
    • refactor (3749220)
    • refactor (7cee17e)
    • all diff-tests pass like before (9ba7921)
    • handle modifications and yanks (3416414)
    • handle entire crate deletions as well (eadc65f)
    • first sketch of addition is working (55d71dc)
    • frame for diffing (cd86f5b)
    • refactor (fa9cfab)
    • Use gitoxide Repository instead of git2::Repository (2d3a182)
    • port all old tests to the new fixture (272bec8)
    • test for auto-clone (8a1bc25)
    • remove redundant tests (45494f0)
    • test for peek changes (61e217a)
    • refactor (aeb6f45)
    • use most recent git version of gitoxide for now (6dadfb7)
    • thanks clippy (ebacafd)
    • normalization test (877b519)
    • add more tests for typical operations (56bfad7)
    • first successful test for addition (365bcf0)
    • simplify CI.yml (c0295c5)
    • fix fixture script (0efccd4)
    • first test can instantiate an Index on the new fixture (f9e31f2)
    • add support for git-lfs to support archives (9a2ce43)
    • build git repository from parts (d28591b)
    • also add commit-message information (7e85688)
    • refactor (0c77e40)
    • refactor (78e05bd)
    • re-enable and fix doc-tests (946ca4c)
    • move CloneOptions into index module. (07f4b6c)
    • refactor (ecd84eb)
    • a script to create an index fixture (9a5f312)
  • Uncategorized
    • Release crates-index-diff v11.0.0 (898024f)
    • Merge branch 'semantic-stability' (b7574d8)
    • thanks clippy (9e9b972)

10.0.0 (2022-05-23)

New Features (BREAKING)

  • Add support for detecting deleted crates. Previously there was no need to do that as deletions couldn't happen - crates are yanked instead.

    Now that the ecosystem experienced its first (known) supply-chain attack crates can also be deleted and we should be able to detect that to allow downstream users to act on this automatically.

Bug Fixes

  • update version in usage example

Commit Statistics

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

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v10.0.0 (43c63ca)
    • prepare changelog prior to release (cc19788)
    • Assure tests run serially without needing --jobs 1 (2701f5c)
    • Merge branch 'syphar-handle-crate-delets' (aba9087)
    • thanks clippy (df91215)
    • disallow Rust 2018 idioms for clearer code (220b943)
    • Add support for detecting deleted crates. (3831937)
    • Upgrade makefile for better auto-docs (0301da5)
    • refactor logic to handle crate-deletes (40655bd)
    • update version in usage example (d273245)

9.0.0 (2022-02-26)

  • Upgrade to git2 v0.14, a BREAKING change. In order to use this release, assure that other dependencies also use git2 v0.14.

Commit Statistics

  • 7 commits contributed to the release.
  • 12 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v9.0.0 (31e82c7)
    • update changelog; bump major version (997ea73)
    • ignore certain tests fo now until new hashes are found that work (e78694f)
    • Revert "see if this special case fixes tests" (5af8ec4)
    • prep for renaming 'master' to 'main' (e228d92)
    • see if this special case fixes tests (f00226b)
    • upgrade git2 to 0.14.0 (448eec7)

8.0.1 (2022-02-14)

  • Only download the master branch on clone, not all branches, to greatly reduce the initial download size from nearly 800MB to just about 100MB.

Commit Statistics

  • 4 commits contributed to the release.
  • 197 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release crates-index-diff v8.0.1 (91df107)
    • prepare changelog (76ae38d)
    • Add some more debugging info to failing test (b111e03)
    • Only fetch the master crates.io branch, not all branches (79cf4ca)

v8.0.0 (2021-07-31)

  • Add fetch-options to CloneOptions to allow private crate index repositories

Commit Statistics

  • 6 commits contributed to the release.
  • 429 days passed between releases.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #11

Commit Details

view details
  • #11
    • Add example for fetch options. (eaef987)
  • Uncategorized
    • (cargo-release) version 8.0.0 (d6f6d46)
    • remove non-exhaustive attribute… (fbf93be)
    • update changelog (79a2ea5)
    • Allow future additions of more options without API breakage (919d9da)
    • Pass FetchOptions for cloning (091ef7d)

v7.1.2 (2020-05-28)

  • Documentation update

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Inform about resource usage in the docs (386dcc4)
    • optimize includes using 'cargo diet' (0989e0f)

v7.1.1 (2020-05-23)

  • Make new feature from v7.1.0 actually usable

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • bump patch level (fceb154)
    • Avoid cloning the crates.io index as part of the doctests; convenience (dd869e2)
    • Allow changing CloneOptions::repository_url from outside the crate (2f10281)

v7.1.0 (2020-05-23)

  • Add Index::from_path_or_cloned_with_options() to allow cloning from different crates repositories.

Commit Statistics

  • 5 commits contributed to the release over the course of 43 calendar days.
  • 54 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • bump minor version (0f20006)
    • add Index::from_path_or_cloned_with_options(…) to support different crates repositories (f9b991c)
    • bye bye travis, we had a good time. (d913fc1)
    • Add github actions (204dcd7)
    • Update README to inform about the collapsed crates.io history, and that we deal with it (5966b49)

v7.0.1 (2020-03-29)

  • disable unused dependency in git2 for lower compile times

Commit Statistics

  • 2 commits contributed to the release.
  • 7 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized

v7.0.0 (2020-03-22)

  • update dependencies and upgrade git2 to 0.13.0

Commit Statistics

  • 1 commit contributed to the release.
  • 16 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized

v6.2.0 (2020-03-06)

  • Add support for setting the last seen reference directly. Useful in conjunction with peek_changes().

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • refactor for more flexibility; bump version (eb244b7)

v6.1.0 (2020-03-02)

  • Add support for progress messages by adding the (fetch|peek)_changes_with_options(git2::FetchOptions) variants.

Commit Statistics

  • 1 commit contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Support for progress messages (0167119)

v6.0.0 (2020-03-02)

  • Update to git2 v0.12.0

Commit Statistics

  • 1 commit contributed to the release.
  • 1 day passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Upgrade to git2 v0.12.0 (6456fa2)

v5.1.0 (2020-03-01)

  • add peek_changes() method, which is like fetch_changes(), but doesn't remember which changes it already saw. Use indx.last_seen_reference().set_target(oid) to get a similar effect as if fetch_changes() had been called.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Allow to peek changes (99c33e6)
    • Don't borrow from git… Revert "Use Cow everywhere in crate version" (8c2f439)
    • Use Cow everywhere in crate version (8d10090)
    • (cargo-release) start next development iteration 5.0.6-alpha.0 (5ccb705)

v5.0.5 (2020-02-19)

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Don't skip serializing None fields… (11f4aa0)
    • (cargo-release) start next development iteration 5.0.5-alpha.0 (992a71d)

v5.0.4 (2020-02-05)

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Implement Default for ChangeKind (2234f7b)
    • (cargo-release) start next development iteration 5.0.4-alpha.0 (fac9ee1)

v5.0.3 (2020-02-03)

Commit Statistics

  • 2 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Add missing clone trait (5f6e3a2)
    • (cargo-release) start next development iteration 5.0.3-alpha.0 (b8c8412)

v5.0.2 (2020-02-02)

  • speed up diff parsing - skip conversion to utf8

Commit Statistics

  • 2 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Improved diff parsing - should be a bit faster (b819af0)
    • (cargo-release) start next development iteration 5.0.2-alpha.0 (ab59e70)

v5.0.1 (2020-02-02)

  • expose the 'git2' crate - useful for error handling

Commit Statistics

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

Commit Details

view details
  • Uncategorized

v5.0.0 (2020-02-01)

  • update to libgit 0.11
  • provide all information known about the crates, similar to the crates-index crate

Commit Statistics

  • 3 commits contributed to the release.
  • 163 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized

v4.0.2 (2019-08-22)

  • update dependencies

Commit Statistics

  • 2 commits contributed to the release.
  • 47 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Bump version after dependency update (f49bbda)
    • Update git2 crate (e1152c2)

v4.0.1 (2019-07-05)

Commit Statistics

  • 2 commits contributed to the release.
  • 474 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • bump patch level: update git2 dependency (debd65b)
    • bump git2 version (724f822)

v4.0.0 (2018-03-17)

  • switch from rustc-serialize to serde

Breaking Changes

  • CrateVersion::from_crates_diff_json(...) was removed in favor of CrateVersion::from_str(...) which is powered by serde.

Commit Statistics

  • 6 commits contributed to the release over the course of 4 calendar days.
  • 441 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Bump version after switching to serde (2498da9)
    • Change refspec back from 'master' to what works in tests (20d2c0e)
    • Upgrade git2 version (fde4a47)
    • Add serde test (c0c3172)
    • Use serde instead of rustc-serialize (a310303)
    • Fix failing test (fd37e49)

v3.0.0 (2016-12-30)

  • use git2 v0.6 instead of v0.4 to support openssl-sys 0.9.

Chore

  • use latest version of git2 That way, crates-io-cli can used the latest crates. Version two is used by doc.rs and must remain as is.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • use latest version of git2 (38d9163)

v2.0.1 (2016-12-27)

Add a tutorial to the documentation.

Documentation

  • add reference to usage example. We are using the crates-cli as an example, even though it certainly is not the cleanest one possible.

Commit Statistics

  • 1 commit contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • add reference to usage example. (2d0c816)

v2.0.0 (2016-12-26)

Chore

  • update to v2.0.0

Bug Fixes

  • cargo: use git2 version for compat with docs.rs (0ceebed3)
  • use git2 version for compat with docs.rs Otherwise docs.rs cannot use use. This is due to the issue described here:

Commit Statistics

  • 2 commits contributed to the release.
  • 2 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • update to v2.0.0 (bd89e72)
    • use git2 version for compat with docs.rs (0ceebed)

v1.0.1 (2016-12-26)

Other

  • crates.io badge [skip ci]

Bug Fixes

  • makefile: make quick tests quick again (9aa756ae)
  • make quick tests quick again
  • display: implementation for changetype (8ed9a81f)

New Features

  • implementation for changetype
  • v1.0.1

Commit Statistics

  • 4 commits contributed to the release.
  • 4 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details

v1.0.0 (2016-12-26)

Chore

  • v1.0.0
  • be compatible with docs.rs See
  • fix keywords
  • see why makefile is not working
  • found an illegal-instruction error Just run cargo test
  • intermediate crate info from hunk However, it's not yet working
  • first commit

Other

  • docs for all remaining methods.
  • documentation for crateversion
  • customizations for us This could possibly work actually
  • test osx as well
  • allow to change seen-ref name
  • show backtrace
  • attempt of fetch_changes implementation It fails as it cannot create the correct reference.
  • support for unyanking We just count it as adding a crate, which also makes sense.
  • handle yanked files
  • now seeing the first added crates
  • automate running tests quickly Using an existing checkout is important enough to put it into a makefile for documentation and automation.
  • support for commit'ishs for diffs
  • first traversal method The test fails for the wrong reason though, as it fails to parse my refspec even though libgit2 seems to be able to do it properly, and a recent-enough version is used.
  • test against all versions of rust
  • simplify travis travis-cargo does nothing for us in this case.

New Features

  • using openssl file as basis

Bug Fixes

  • give up on osx Openssl can't be linked due to missing symbols, no matter what.

    Maybe ... the version is too new? Odd that it works locally though.

  • see if openssl somehow works after all

  • openssl setup from openssl-rs itself

  • try the msvc 32bit version

  • msys2 seems to be the problem here

  • try to enforce linking latest openssl

  • try disabling the cache Maybe that way, the 64 bit builds will work

  • enforce more recent openssl lib Currently some symbols are missing or are named differently. Let's also see if it links it to the correct spot in /usr/local/opt/openssl

  • only 1.1.0c seems to be working See

  • remove 32 bit targets due to failure The previous version triggered this error: Error parsing appveyor.yml: Value can be either string or "secure" string. (Line: 5, Column: 7)

  • attempt to set OPENSSL env vars

  • try to allow 32 bit failures Could also remove them, but ideally it remains visible to maybe one day work.

  • try without index-bare cache For now ... I have not seen it being cloned at all. Possibly the cache provides a none-empty directory ?

  • custom code to get cmake onto osx

  • let's hope it will actually run now

  • set envvars propery

  • remove debug prints

  • remove error handling in makefile This isn't a good thing to do for all of those without cargo. However, let's see if it fixes the issue first.

  • to work with GNU make

  • finally the correct refspec Fair enough, need trees here after all!

  • cmake binary installation

  • use different cmake source

  • cmake upgrade via before_script

  • see if a custom source will get latest cmake

  • enforce latest cmake

Refactor

  • don't enforce branches Previously valid ref-names would be interpreted as branches, which limits their use despite the name indicating otherwise.

    Now every ref path is supported.

  • use quick-error That way, the crate-error type is an actual error with all the relevant implementations.

    It's impossible to work without it, I think :).

  • move crate into own module

  • better diff.print implementation

  • simplify fetch-changes error handling

  • much nicer Crate from json It's good to know that we can chain everything, but that should only be done if there is an actual dependency of the respective values.

    Otherwise, just abort early.

  • better error handling

  • allow direct usage of objects as well

Test

  • remove duplicate all crates are also iterated in the 'changed_since_last_fetch' test.
  • fetch_changes() Just the frame and all testing I could think of
  • assure we can handle the entire index
  • first clone on demand Would be nice to be able to specify --depth as well.
  • first failing test

Commit Statistics

  • 61 commits contributed to the release over the course of 1 calendar day.
  • 61 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • v1.0.0 (381e7cc)
    • docs for all remaining methods. (706636b)
    • give up on osx (cdfc689)
    • see if openssl somehow works after all (3a5eb46)
    • documentation for crateversion (91bf44d)
    • openssl setup from openssl-rs itself (36b79de)
    • try the msvc 32bit version (120d752)
    • msys2 seems to be the problem here (42a9800)
    • try to enforce linking latest openssl (0a738f3)
    • try disabling the cache (dda7c80)
    • enforce more recent openssl lib (714d7cf)
    • only 1.1.0c seems to be working (ae26330)
    • remove 32 bit targets due to failure (959fde0)
    • attempt to set OPENSSL env vars (f4ea940)
    • try to allow 32 bit failures (05bffd6)
    • try without index-bare cache (b11f6df)
    • custom code to get cmake onto osx (4860906)
    • let's hope it will actually run now (a052f41)
    • customizations for us (c4bf948)
    • using openssl file as basis (accb62d)
    • test osx as well (b0f19b0)
    • don't enforce branches (601dc2d)
    • use quick-error (ef53496)
    • move crate into own module (97a5b81)
    • better diff.print implementation (81c95f2)
    • simplify fetch-changes error handling (988b668)
    • much nicer Crate from json (caa5879)
    • allow to change seen-ref name (56d416a)
    • remove duplicate (42e6803)
    • be compatible with docs.rs (a4e6e7e)
    • set envvars propery (b784f1c)
    • fix keywords (787bdac)
    • show backtrace (ed7ca36)
    • better error handling (b0dd277)
    • attempt of fetch_changes implementation (708d9c0)
    • allow direct usage of objects as well (eee5134)
    • fetch_changes() (d06c4a0)
    • remove debug prints (24c1c81)
    • assure we can handle the entire index (97b417a)
    • support for unyanking (2ef9c02)
    • handle yanked files (8048a2c)
    • remove error handling in makefile (9ef08fa)
    • see why makefile is not working (11a006b)
    • to work with GNU make (42e1290)
    • now seeing the first added crates (887c088)
    • found an illegal-instruction error (607d747)
    • intermediate crate info from hunk (3ce91e8)
    • automate running tests quickly (8801ec2)
    • support for commit'ishs for diffs (e451067)
    • finally the correct refspec (f89651b)
    • first traversal method (d49f62f)
    • cmake binary installation (d0d4307)
    • use different cmake source (f9f67ef)
    • cmake upgrade via before_script (a978136)
    • see if a custom source will get latest cmake (77bbd20)
    • enforce latest cmake (2d0d5d9)
    • test against all versions of rust (094c788)
    • simplify travis (f9d531a)
    • first clone on demand (fdf281e)
    • first failing test (1c0b2c0)
    • first commit (f1568c0)

Dependencies

~13–48MB
~868K SLoC