[WIP] feat: unstable SHA256 support#1206
Draft
weihanglo wants to merge 10 commits intorust-lang:masterfrom
Draft
[WIP] feat: unstable SHA256 support#1206weihanglo wants to merge 10 commits intorust-lang:masterfrom
weihanglo wants to merge 10 commits intorust-lang:masterfrom
Conversation
* GIT_SHA1_COLLISIONDETECT -> GIT_SHA1_BUILTIN * GIT_WINHTTP -> GIT_HTTPS_WINHTTP * GIT_SECURE_TRANSPORT -> GIT_HTTPS_SECURETRANSPORT * GIT_OPENSSL -> GIT_HTTPS_OPENSSL See <libgit2/libgit2#6994>
3fc5ab5 to
a0f7252
Compare
* Add `GIT_REPOSITORY_INIT_RELATIVE_GITLINK` at libgit2/libgit2@bc737620d * Remove `GIT_REPOSITORY_INIT_NO_DOTGIT_DIR` at libgit2/libgit2@ca2a241e4
* Remove `GIT_OBJECT_OFS_DELTA` * Remove `GIT_OBJECT_REF_DELTA` See libgit2/libgit2@23da3a8f3
libgit2 simplified SHA256 API to use `_ext` suffixes instead of changing base function signatures. This avoids breaking changes for users who don't need SHA256 support. Updated bindings: - git_oid_from_raw - git_oid_from_prefix - git_oid_from_string - git_diff_from_buffer_ext - git_index_new_ext - git_index_open_ext - git_odb_new_ext - git_odb_open_ext - git_repository_new_ext See libgit2/libgit2@56e2a85643f (libgit2/libgit2#6975)
a0f7252 to
dd35da4
Compare
This adds an `unstable-sha256` Cargo feature, as a follow-up of rust-lang#1201 Also adds some smoke tests for affected operations/types. ## Insta-stable * **NEW** `Index::with_object_format` to create with different format ## Behind `unstable-sha256 * **NEW** `ObjectFormat` enum with variants `Sha1` and `Sha256` * **NEW** `RepositoryInitOptions::object_format()` method to set hash algo * **NEW** `Remote::object_format` method to get hash algo on a remote * **CHANGED** `Diff::from_buffer` to accept a extra object format argument * **CHANGED** `Index::open` to accept a extra object format argument * **CHANGED** `Indexer::new` to accept a extra object format argument * **CHANGED** `Oid::from_str` to accept a extra object format argument * **CHANGED** `Oid::hash_{object,file}` to accept a extra object format argument * **REMOVED** `Index::new` to avoid misuse. * **REMOVED** `impl std::FromStr for Oid` to avoid misuse
This also run systest first, so we can dicover bindding mismatch before
dd35da4 to
a332c64
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds an
unstable-sha256Cargo feature, as a follow-up of #1201.Also adds some smoke tests for affected operations/types.
Part of #1090
Insta-stable
Index::with_object_formatto create with different formatBehind
unstable-sha256ObjectFormat::Sha256enum variantRepositoryInitOptions::object_format()method to set hash algoRemote::object_formatmethod to get hash algo on a remoteDiff::from_bufferto accept an extra object format argumentIndex::opento accept an extra object format argumentIndexer::newto accept an extra object format argumentOid::from_strto accept an extra object format argumentOid::hash_{object,file}to accept an extra object format argumentIndex::newto avoid misuse.impl std::FromStr for Oidto avoid misuselibgit2 1.9 compatibility changes
This PR also includes fixes for libgit2 1.9 breaking changes:
GIT_SHA1_COLLISIONDETECT->GIT_SHA1_BUILTIN, HTTPS backend macros)refdb_typefield togit_repository_init_optionsSee libgit2/libgit2#6994 and libgit2/libgit2#7102 for upstream changes.
These changes can be split out if needed.