Skip to content

v0.0.2

Latest

Choose a tag to compare

@MagicalTux MagicalTux released this 19 Oct 11:11
· 1 commit to master since this release
10db39e

Fixed

  • (transport) retry reads/requests interrupted by a signal (EINTR)
  • (client) clone writes the index; filter cap; HTTP v2 push/sha256/deepen
  • (server) git-compatible upload-pack negotiation, shallow, include-tag, atomic
  • (protocol) parse v1/peeled adverts, deepen-since/not/relative, v2 unshallow
  • (cli) keep Windows separators in a local clone's origin URL
  • (init) write core.symlinks=false off Unix
  • (config) read and write git's value quoting and escapes
  • (cli) make the puregit CLI output and exit codes git-compatible
  • (diff) emit git's hunk header ranges
  • (worktree) checkout/reset --hard/merge keep index and work tree in sync
  • (status,add) stage symlinks as links, compare modes, honor intent-to-add
  • (commit-graph) git's generation/date bit layout and octopus EDGE parents
  • (walk) pick the best merge base and walk history in git's date order
  • (index) read/write v4, keep extended flags, honor skipHash, drop stale cache-tree
  • (pack) resolve delta chains iteratively and accept git's deep chains

Other

  • (interop) faster fixtures, no TCP half-close, skip git daemon client on Windows
  • (interop) wire-protocol interop against the real git CLI
  • (interop) model symlinks the Git for Windows way off Unix
  • exclude interop/ from the published package
  • run the libgit2 interop harness on Linux, macOS and Windows
  • (interop) libgit2 interop harness in interop/libgit2
  • (interop) CLI parity tests against the real git binary
  • (interop) on-disk format interop against the real git CLI, both directions
  • require git for interop tests
  • relicense under MIT only
  • add CI, crates.io, docs.rs and license badges
  • keep test fixtures byte-exact on Windows

Added

  • Initial scaffold of the pure-Rust git engine.
    • no_std + alloc core: object ids (SHA-1/SHA-256), the blob/tree/commit/tag
      object model, loose + in-memory object databases, zlib compression over
      compcol, packfile reading with OFS_DELTA/REF_DELTA resolution and v2
      .idx lookup, references (loose + packed-refs + symrefs), the DIRC
      staging index, the git config parser, and the sans-IO smart protocol
      (pkt-line, capabilities, ref advertisement, fetch request).
    • std shell: the Vfs trait and its StdFs backend, Repository
      (init/open, object I/O, HEAD, config/index), and worktree checkout.
    • Feature-gated scaffolds for the HTTP (rsurl) and SSH (puressh)
      transports and the upload-pack/receive-pack server handlers.
    • A puregit CLI (git-compatible front end) with init, hash-object, cat-file, and rev-parse.
  • Project README.md and a milestone-based ROADMAP.md.
  • Combined loose + packed object database with cross-backend delta resolution;
    reachability/RevWalk; pack writing (PackWriter + .idx) and pack ingest
    (explode_pack); write-tree from the index.
  • Local porcelain: Repository::add_path / commit, and CLI add /
    write-tree / commit / log / unpack-objects. Output is byte-compatible
    with canonical git (passes git fsck).
  • Smart transfer protocol: upload_pack and receive_pack server handlers, a
    client fetch / clone / push, and an in-process LocalTransport.
  • Smart-HTTP(S) transport over rsurl — clones real repositories from GitHub
    over HTTPS (pure-Rust TLS). CLI git clone <url>.
  • SSH transport over puressh (single owned exec channel; strict
    known_hosts; password auth). CLI clone routes ssh:// and scp-style URLs.
  • Fixed an inflate_capped infinite loop (compcol's capped decoder spins at the
    exact-size cap with trailing pack bytes); reimplemented with a bounded
    scratch-buffer loop, plus inflate_exact for packfile iteration.