Commit Graph

2 Commits

Author SHA1 Message Date
zhenyi
916b5f3176 feat(types): add Serialize/Deserialize derives to all types.rs
Add the serde 'twins' (Serialize + Deserialize) to every public struct
and enum in src/*/types.rs so data types can be serialized via JSON,
bincode, postcard, etc.

Dependency changes:
- enable 'serde' feature on gix (for gix::ObjectId)
- enable 'serde' feature on time (for time::OffsetDateTime)

Skipped:
- src/archive/types.rs::ChildArchiveReader<R> — contains a
  tokio::process::Child field, semantically not serializable

Coverage (18 modules):
archive, blame, blob, branch, cleanup, commit, compare, config,
conflict, diff, merge, refs, remote, setup, submodule, tags, tree

Notes:
- field names kept snake_case (no rename_all remap)
- existing PartialEq / Eq / Default / Copy derives preserved
- cargo build + cargo test (38 passed) green
2026-08-14 18:10:04 +08:00
zhenyi
680411c4fb chore: initialize gitbaby repository
gitbaby is an asynchronous Rust library wrapping git operations, built on
gix + tokio + async-trait.

Module layout:
- archive, blame, blob, branch, cleanup, commit, compare, config,
  conflict, diff, merge, refs, remote, setup, share, submodule, tags,
  tree (feature modules)
- command: command scheduler (cmd/env/pipe/context/error)
- repo: RepositoryFacade trait (consumers implement, exposing a
  gix::Repository)

Features:
- async API on tokio 1.53
- order-preserving Env (Vec<(String, String)>)
- hand-written BabyError / CmdError, not using thiserror derive
- integration tests covering cmd_run / context / env / pipe (env keys
  prefixed for isolation)

CI: none, standard cargo build / test / clippy / fmt only
2026-08-14 18:10:04 +08:00