Crates.io | crates-index-diff |
lib.rs | crates-index-diff |
version | |
source | src |
created_at | 2016-12-25 20:53:32.50239+00 |
updated_at | 2025-04-07 10:00:17.019819+00 |
description | Learn what's changed in the crates.io index |
homepage | |
repository | https://github.com/Byron/crates-index-diff-rs |
max_upload_size | |
id | 7776 |
Cargo.toml error: | TOML parse error at line 24, column 1 | 24 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
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.
Upgrade gix
to 0.63 and crates-index to use the same version of gix
that contain security fixes.
gix
to v0.62gix
to 0.58A maintenance release without any API changes. The major version bump is just to signal the change
of the gix
dependency to version v0.57.
gix
to v0.57gix
to 0.55.2Related issue: https://github.com/rust-lang/docs.rs/issues/2295
167a34a
)28f0d1f
)gix
to 0.55.2 (e8b2c90
)c404f67
)gix
versions are synced in the entire tree. (8576bc7
)7957987
)gix
v0.54 (from v0.50)
This may produce smaller binaries.
Further, no performance option is set anymore to leave this in the hands of the final binary.
752ba0c
)gix
v0.54 (from v0.50) (34d3510
)922e962
)fa1b21c
)e200a56
)VersionDeleted
variant. (959c566
)b0f84d0
)gix
to v0.48
Change::Delete
into Change::VersionDeleted
and Change::CrateDeleted
.
This resolves an ambiguity (facilitated by incorrect documentation) that would emit
Change::Delete
when a single version was deleted, even though downstream that would
rightfully be interpreted as deleting the whole crate.
Adimittedly, previously there were no single-version deletions, just yanks, so we didn't think of it either.
gix v0.47
(from v0.45).
This includes integration with gix negotiation algorithms and support for
multi-round negotiation just like git does it.gix
from v0.37 to v0.44.
Note that there is no breaking change, but the major version bump is merely
for safety and to make it easy to reatain a certain gix
version within the tree.DependencyKind
publicly accessible
Previously it was used as field within an exported type, but it couldn't
be used directly.git-repository
to gix
This change renames the public re-export from git
to gix
as well
for consistency.Index::peek_changes_ordered()
now actually provides ordered changes.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.
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.
git-repository
.
This way the user of the library has a choice to activate any of these
features:
crates-index-diff
operates as it should against a
real crates-index.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.yanked
status.
That way we assure that the state we are interested in is indeed
communicated perfectly through the events we emit.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.
git-repository
. (c3cff88
)b887560
)87e49b5
)baseline-atomic
test. (81c6dd2
)yanked
status. (4dd4a4c
)A massive release that increases performance up to 10x for diffing repositories1 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!
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.
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.
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.Clippy helped 1 time to make code idiomatic.
b42ac1e
)3b52cfd
)4d53b04
)c0c01bb
)097209c
)02cdb2e
)b9a1850
)3fcf96b
)Change::Deleted
variant now as versions
to include all deleted versions. (b538ad6
)CrateVersion
type and sub-types. (f9be536
)7e9d3cd
)dfaf1be
)a93ba40
)ec9842a
)bd3bc22
)1b5684f
)max-performance
feature to tune git-repository
. (6f5b12a
)bae80b0
)a377ca4
)8256cbb
)61c6272
)249d141
)This would cause updates or removals to be missed.
Now hunks of changes are exhaused properly, fixing the issue.
Clippy helped 1 time to make code idiomatic.
imara-diff
for performance, but also to get off the broken git-repository
v0.25 release.3708131
)adecda5
)b28b7ca
)377065e
)6b47427
)62cb6eb
)276e726
)imara-diff
(5573529
)2809c75
)git-repoitory v0.26
, fail to make diff compile. (3f47ec3
)init::Error2
to init::Error
.
This name was left by mistake and shouldn't have made it into the
release.This release drops git2
in favor of gitoxide
.
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.
git2
in favor of gitoxide
.
gitoxide
is now used for cloning and fetching as well.2b08485
)35b1ce7
)ab529ad
)533bfab
)7cede70
)git2
in favor of gitoxide
. (4cedf27
)6975d67
)1774f94
)gitoxide
without removing git2 just yet. (878abe9
)fetch_changes_with_options()
using gitoxide (900ae56
)00e6875
)759ff30
)git-repository
as git
This makes type conversions possible where needed.This release is v11.2, but correctly indicates the breaking change introduced by upgrading
git-repository
to v0.24, which fixes #23.
git-repository
v0.24 to simplify diff implementation.Now only file deletions will be assumed to be crate deletions.
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
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.
5b2e3ce
)ac83e7a
)git-repository
. (23a66b9
)e93f1c6
)7616db2
)02f715e
)4b7fc6e
)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.
For good measure, now using +
in the refspec to assure it forces
an update.
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.
CloneOptions
into index
module.
The index
module is now public for that reason.
Clippy helped 2 times to make code idiomatic.
gitoxide
(23e14af
)eb148e5
)ae3f971
)68ff142
)371b512
)3749220
)7cee17e
)9ba7921
)3416414
)eadc65f
)55d71dc
)cd86f5b
)fa9cfab
)gitoxide
Repository
instead of git2::Repository
(2d3a182
)272bec8
)8a1bc25
)45494f0
)61e217a
)aeb6f45
)6dadfb7
)ebacafd
)877b519
)56bfad7
)365bcf0
)c0295c5
)0efccd4
)Index
on the new fixture (f9e31f2
)9a2ce43
)d28591b
)7e85688
)0c77e40
)78e05bd
)946ca4c
)CloneOptions
into index
module. (07f4b6c
)ecd84eb
)9a5f312
)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.
Clippy helped 1 time to make code idiomatic.
43c63ca
)cc19788
)2701f5c
)aba9087
)df91215
)220b943
)3831937
)0301da5
)40655bd
)d273245
)git2
v0.14, a BREAKING change. In order to use this release, assure that other dependencies also use git2
v0.14.31e82c7
)997ea73
)e78694f
)5af8ec4
)e228d92
)f00226b
)448eec7
)CloneOptions
to allow private crate index repositoriesIndex::from_path_or_cloned_with_options(…)
to allow cloning from different crates repositories.ed5c1ac
)peek_changes(…)
.eb244b7
)(fetch|peek)_changes_with_options(git2::FetchOptions)
variants.0167119
)Update to git2 v0.12.0
6456fa2
)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.
crates-index
crateCrateVersion::from_crates_diff_json(...)
was removed in favor of CrateVersion::from_str(...)
which is powered by serde
.use git2 v0.6 instead of v0.4 to support openssl-sys 0.9.
38d9163
)Add a tutorial to the documentation.
2d0c816
)Maybe ... the version is too new? Odd that it works locally though.
Now every ref path is supported.
It's impossible to work without it, I think :).
Otherwise, just abort early.
381e7cc
)706636b
)cdfc689
)3a5eb46
)91bf44d
)36b79de
)120d752
)42a9800
)0a738f3
)dda7c80
)714d7cf
)ae26330
)959fde0
)f4ea940
)05bffd6
)b11f6df
)4860906
)a052f41
)c4bf948
)accb62d
)b0f19b0
)601dc2d
)ef53496
)97a5b81
)81c95f2
)988b668
)caa5879
)56d416a
)42e6803
)a4e6e7e
)b784f1c
)787bdac
)ed7ca36
)b0dd277
)708d9c0
)eee5134
)d06c4a0
)24c1c81
)97b417a
)2ef9c02
)8048a2c
)9ef08fa
)11a006b
)42e1290
)887c088
)607d747
)3ce91e8
)8801ec2
)e451067
)f89651b
)d49f62f
)d0d4307
)f9f67ef
)a978136
)77bbd20
)2d0d5d9
)094c788
)f9d531a
)fdf281e
)1c0b2c0
)f1568c0
)Needs to build with git-repository/max-performance
and setup a pack cache, for example with GITOXIDE_PACK_CACHE_MEMORY=1g <you-application>
↩