git.tree / git.parseCommit — libdog git object parsersExpose dog/git's tree + commit object parsers to JS as git.* leaves so
bin/lib/keeper.js reads trees/commits without hand-rolling git framing. Part of
JS-027. Method: Issues.
be status must read tree (file list + gitlink modes) and commit
(tree, parents) objects; dog/git/GIT.h already parses both —
GITu8sDrainTree (one entry/call: mode·name·sha), GITu8sParseCommit /
GITu8sCommitTree. tok32/ragel is a token stream — wrong shape for records.git.tree(bytes) → pull cursor: .next() advances one entry, exposes mode
(incl. 160000 gitlink), name (zero-copy) / str, sha (40-hex). Optional
git.tree(bytes, cb) in-frame callback (io.readdir-style).git.parseCommit(bytes) → eager {tree, parents[], foster[], author, committer, body}.dog/git (libdog), like git.pack/git.delta (JS-024).
No new C parsing; cursor state in JS (rule #4). NO dog linked._tree_next(bytes, off) -> {mode, nameStart, nameEnd, sha, nextOff} leaf; cursor JS.git.commit(bytes) header cursor only if a raw case needs it.js/test/git.js): parse a known tree (incl. a 160000 entry)
+ commit; assert entries/fields vs vectors; full-walk count; zero-copy name.git package; update js/INDEX.md + js/API.md.