bin/lib/checkout.js + bin/get.js — apply tree + entryMaterialise a fetched baseline tree into the worktree (new/del/mod, files+dirs),
append the wtlog/REFS rows, print the be get op-summary, and wire the
bin/get.js entry + transport dispatch. The orchestration tying JS-039 fetch +
JS-040 ingest into output-equivalent be get. Part of JS-038.
be get checks out its tree into the
wt — create dirs, write new/changed files (right mode), delete removed ones —
then records the get in .be/wtlog + refs, and prints what moved.keeper.readTreeRecursive (leaf set) + classify.js (current wt state) +
wtlog.js already exist (read side); this adds the WRITE/apply side.checkout(repo, keeper, tipSha): diff baseline-tree vs wt, apply new/del/mod
for files and dirs (mkdir -p, io.write, io.unlink, mode bits), atomic-ish.bin/get.js: parse args/URI, dispatch transport (JS-039), ingest
(JS-040), checkout, append wtlog+REFS, emit the summary native emits.abc ONLY. Summary + wt state byte-equivalent to native be get
(the JS-038 parity matrix). No keeper/sniff dog.classify.js to compute the apply set (baseline⊕wt) so del/mod/dir
handling matches status semantics; honour .gitignore via ignore.js.test/js/get/* (helpers test/js/lib/, borrow fixtures
from test/get/): {file,ssh,be} × {new,del,mod} × {file,dir} — JS get vs
native be get: same stdout summary AND same resulting wt tree.bin/lib/checkout.js + write helpers + bin/get.js.