Revision history for Git-Native

0.003     2026-05-27 18:55:00Z
  - New Git::Native::Config class - get_string / set_string / snapshot
  - Repository: config (live), config_snapshot (read-only), and a
    config_string($key) convenience that reads off a fresh snapshot
  - Git::Native->reference_name_is_valid($name) - static refname
    validator, no repository handle required

0.002     2026-05-27 18:02:46Z
  - Initial release
  - Moo-based high-level wrapper around Git::Libgit2 / libgit2 — no
    fork/exec, no XS
  - Tests: Error throw/catch (t/11-error.t), Credential constructors
    (t/35-credential.t), compile-check of all modules (t/00-load.t)
  - Core classes: Repository, Reference, Config, Blob, Tree, TreeBuilder,
    Commit, Signature, Oid, Object, Error (Throwable)
  - Remote class with fetch/push, wildcard-push expansion (libgit2 quirk),
    push --prune via connect+ls diff
  - Credential class for SSH key/agent, HTTPS userpass, default, username
  - General-purpose surface: clone (non-bare), Revwalker, Branch, Tag,
    status, status_for_path
  - Reference accessors/predicates: resolve, shorthand, symbolic_target,
    is_branch/is_remote/is_tag, plus set_target / symbolic_set_target
  - Repository HEAD surface: head, head_unborn, head_detached, set_head,
    reference_symbolic_create; init(initial_branch => 'main') pins HEAD
  - Commit accessors: summary, time (epoch), time_offset (minutes)
  - RAII handle ownership via DESTROY -> git_*_free, child objects hold
    strong ref to parent to prevent use-after-free
  - All tests run with GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null
    to avoid polluting the user's gitconfig
  - Live SSH/HTTPS auth tests (opt-in via TEST_GIT_NATIVE_* env vars)
