Skip to content

WIP: Handling of zero#1

Closed
lorenzleutgeb wants to merge 11 commits into
weihanglo:sha256-git2from
lorenzleutgeb:zero
Closed

WIP: Handling of zero#1
lorenzleutgeb wants to merge 11 commits into
weihanglo:sha256-git2from
lorenzleutgeb:zero

Conversation

@lorenzleutgeb
Copy link
Copy Markdown

weihanglo and others added 11 commits April 24, 2026 09:04
* 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>
* 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)
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
- **NEW** `Oid::object_format` to access underlying oid type

## Behind `unstable-sha256`

- **NEW** `ObjectFormat::Sha256` enum variant
- **NEW** `RepositoryInitOptions::object_format()` method to set hash algo
- **NEW** `Remote::object_format` method to get hash algo on a remote
- **NEW** `Oid::raw_bytes` to return the full underlying bytes
- **CHANGED** `Diff::from_buffer` to accept an extra object format argument
- **CHANGED** `Index::open` to accept an extra object format argument
- **CHANGED** `Indexer::new` to accept an extra object format argument
- **CHANGED** `Oid::from_str` to accept an extra object format argument
- **CHANGED** `Oid::hash_{object,file}` to accept an extra object format argument
- **CHANGED** `Oid::as_bytes` to return the logic bytes (SHA1 -> 20 bytes; SHA256 -> 32 bytes)
- **CHANGED** `impl Hash for Oid` to hash `git_oid->kind`
- **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
@weihanglo
Copy link
Copy Markdown
Owner

Thanks! I did the other way you suggested (two consts). See the latest revision.

(Going to close this as the branch is outdated)

@weihanglo weihanglo closed this May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants