various improvements - #2905
Merged
Merged
Conversation
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
25 times, most recently
from
August 17, 2026 18:48
dabd33c to
6a1e3ad
Compare
I won't get used to the alternative. - module - mod.rs - siblings vs - module - siblings - module.rs Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Package OpenPGP, SSH, and X.509 signing identities for tests that need to exercise Git-compatible signing and verification. Add helpers that install each identity into an isolated Git configuration and expose the matching verification material. Generate the fixtures from a documented script so their passwords, principals, and validity periods remain reproducible. Ignore transient GnuPG state created beside the packaged fixture files. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Assisted-by: GPT 5.6
Assisted-by: GPT 5.6
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
from
August 17, 2026 18:54
6a1e3ad to
a19a7cf
Compare
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
3 times, most recently
from
August 18, 2026 19:00
3257b6e to
20b7141
Compare
Note that I did only skim through `git.rs`, considering the details of the implementation secondary to the outcome. `gix.rs` was refactored quite a bit, helping to provide more utilities in other plumbing crates to help with this 'gix' avoidance. <!-- agent --> Add deterministic repository snapshots covering HEAD, references, reachable commits, every index stage, conflict-free index trees, and exact worktree contents. Provide a portable form which omits platform-specific filesystem modes for stable cross-platform assertions. Add writable Git-version-aware fixture APIs for copy and execute creation modes. Require archived fixtures when the selected Git is incompatible, without running unsupported scripts or post-processing. Use the Git executable selected by gix-path consistently for version checks, helper commands, and fixture scripts, including PATH selection for scripts. Harden signing fixtures with command-compatible paths, isolated homes, and complete SSH key pairs. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Assisted-by: GPT 5.6
<!-- agent --> gix-testtools now depends on gix-path for Git executable discovery, so gix-path cannot retain the reverse development dependency. Replace its environment and current-directory guards with local test utilities, use tempfile directly, and create local-config repositories with the Git executable selected by exe_invocation(). Remove the obsolete scripted fixture and archive. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Teach commit parsing and signature extraction about the gpgsig-sha256 header used by Git when signing SHA-256 commits. Treat it like gpgsig when locating the embedded signature while preserving the actual header name when reconstructing the signed payload. Cover both full commit parsing and token iteration so callers observe the signature consistently through either API. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Replace the command-specific GPG invocation with gix::Commit::verify_signature so the CLI and library share one implementation and one interpretation of repository configuration. This extends the command from hard-coded OpenPGP verification to the OpenPGP, X.509, and SSH formats supported by Git, including configured programs and trust policy. Preserve verifier diagnostics on stderr and fail when a signature is invalid or insufficiently trusted. Enable the gix command feature in gitoxide-core to make the shared verification API available. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Treat configured external diff commands as shell command lines instead of executable paths that require manual argument splitting. Git diff drivers may contain a program followed by arguments. Passing such values through the shell-aware gix-command preparation path preserves that configuration while still appending Git diff arguments and environment variables in the established platform code. Add coverage for a configured command containing an argument so custom diff drivers and text-conversion commands are launched as configured. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Represent change IDs as object hashes while formatting and parsing them with Jujutsu's reverse-hex alphabet. Preserve the underlying hash bytes so conversion from an ObjectId produces exactly the identifier that JJ displays for the same byte sequence. Extend hash prefixes with symmetric reverse-hex parsing and formatting, including odd-nibble prefixes, so callers can resolve abbreviated change IDs through the existing binary prefix comparison machinery. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Add `Repository::editor()`` to resolve the interactive editor with Git's precedence rules. Honor GIT_EDITOR ahead of trusted core.editor, consider VISUAL only for capable terminals, fall back through EDITOR to vi, and report no editor for an unconfigured dumb terminal. Route GIT_EDITOR through the configuration environment-override framework so isolated repositories and environment permissions remain effective. Cover precedence, dumb terminals, the no-op editor, and isolation. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
…gnedData::verify()` <!-- agent --> Add feature-gated plumbing for verifying OpenPGP, X.509, and SSH commit signatures with fully resolved programs, arguments, environments, trust thresholds, and SSH policy inputs. Keep repository configuration out of the object crate while exposing Git-compatible status, identity, key, and fingerprint results. Stream signed commit data directly to OpenPGP and SSH verifiers without reconstructing it. Use a temporary payload only where gpgsm requires a file, and cover Git status parsing plus unsupported and mismatched formats. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
…:verify()` **Breaking** because it also adds `config::tree::Key::default_value()`, which gives `Any` a `default_value` field. <!-- agent --> Expose repository-aware verification on commits while delegating verifier execution and result parsing to gix-object plumbing. Resolve supported signature formats, configured programs, trust thresholds, SSH allowed signers and revocations, repository-relative paths, and commit verification time according to Git configuration. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Add plumbing for signing commits through external OpenPGP, X.509, and SSH programs under the shared signature feature. Accept fully resolved signer options so callers control the program, key, environment, and arguments without introducing repository configuration into the object crate. Replace an existing signature using the hash-appropriate commit header, normalize signer output, and report process and malformed-output failures with context. Cover every supported format, SHA-256 headers, replacement, literal SSH keys, and verify generated signatures through the sibling plumbing verifier as well as the external reference programs. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
<!-- agent --> Expose repository-aware commit signing while delegating signature creation to gix-object plumbing. Resolve gpg.format, per-format programs, signing keys, committer identity fallback, and gpg.ssh.defaultKeyCommand from Git configuration, including trusted paths and shell commands. Add commit_signing_options_if_enabled() so porcelain callers honor commit.gpgSign without resolving signer configuration while signing is disabled. Preserve caller control over resolved program arguments and environment, including non-interactive GPG operation. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
2 times, most recently
from
August 18, 2026 19:42
827adb1 to
11dd239
Compare
Sebastian Thiel (Byron)
marked this pull request as ready for review
August 18, 2026 19:43
Contributor
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
from
August 18, 2026 19:44
11dd239 to
5223c1a
Compare
Sebastian Thiel (Byron)
marked this pull request as draft
August 18, 2026 19:45
Breaking as it renames `Tag::pgp_signature` to `signature`. <!-- agent --> Extend `gix-object` signature support from commits to annotated tags. **Signature infrastructure** - Move object-independent signing and verification machinery into the shared `gix_object::signature` module. - Keep signature discovery available without the `signature` feature. - Continue using the existing signing and verification options and shared verification outcome for all object types. **Annotated tags** - Add `Tag::sign()` and `TagRef::sign()`. - Add signature accessors that report both the armor and detected format. - Add raw extraction of a tag signature and its exact signed bytes. - Recognize OpenPGP signature/message, X.509, and SSH armor markers. - Match Git by selecting the last recognized marker at a line boundary. - Support native SHA-1 and SHA-256 tags without compatibility headers or multiple signatures. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
asdf <!-- agent --> Validate the entire batch before changing references, reject branches checked out in any worktree, and delete references and reflogs in one transaction without requiring commit traversal. Remove matching local branch configuration under lock and report when configuration cleanup fails after reference deletion. Share checked-out branch discovery with fetch updates and use restricted repository opening throughout the affected tests. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
Sebastian Thiel (Byron)
force-pushed
the
various-improvements
branch
from
August 19, 2026 03:58
5223c1a to
61c5e1e
Compare
Sebastian Thiel (Byron)
marked this pull request as ready for review
August 19, 2026 03:58
Contributor
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
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.
Cherry-picked commits from various longer-lived branches to get them merged sooner, individually.
Tasks
Contains commits from #2853 .