be diff: must recurse into submodules and render gitlink/pin changesbe diff:?<sha> on a commit whose only change is a submodule pin bump shows
NOTHING: the gitlink pointer move (old-pin → new-pin) is not rendered and
diff: never recurses into the sub, so the real work is invisible from the
parent. diff: should render the gitlink change AND recurse, the way
GET/POST/PATCH already do.
<sub> gitlink change is not
emitted, and diff: never reaches the sub's content.be diff:?29df3828 (bumps abc
b8ed6277→d8656f41; the FILEErr change lives in the sub) → empty output.<path> <old40>..<new40>.diff: into the mounted sub and emit its commit-range diff
(path-prefixed under the mount), mirroring GET/POST/PATCH; --nosub
suppresses.be diff: unchanged.diff: renderer + the sub-recursion the other verbs do.DIFFREF.c); submodule mount discovery is
be's job — graf must not gain mount discovery (per-store boundary).be already
owns submodule mount discovery + child dispatch (BEProjectorSubs →
BESubsHere → BERelaySub); it merely replays the parent URI verbatim
per sub. The fix is diff-specific logic in be's fan-out: for diff:,
rewrite each sub's child URI to diff:?<old-pin>#<new-pin> from the pin
pair graf already computes for the gitlink line (part-a). The relay stays
generic for every other projector.be's job. Rejected.<sub> <old40>..<new40> diff text — fragile, couples to render output).
Pins come from keeper/SUBS.h KEEPSubsAt(tree) (per-tree gitlink+path
enumeration, built on dog/git/SUBS.h SUBSu8sParse): new = subs at the
target commit's tree, old = subs at the base commit's tree, joined by
mount path (new-only ⇒ added/null old, old-only ⇒ deleted/null new). No
capture-pipe detour, no bediff_parse_gitlinks. Endpoints MUST match
graf's diff base (single sha → vs first-parent; ?a#b → a vs b).diffref_collect_visit collects WALK_KIND_SUB (is_sub) and emits
<path> <old40>..<new40>; test test/diff/08-sub-pin-bump-gitlink.be's diff fan-out builds the per-sub pin map
from KEEPSubsAt over both endpoint trees and rewrites each bumped
sub's child URI to diff:?<old>#<new>; relay + path-prefix; --nosub.be diff: on a pin-bump shows the sub's content diff
(test/diff/08); added-sub range (test/diff/10).ef0430da (gitlink line; validated vs the ABC-002 bump →
abc b8ed6277..d8656f41).018a59c4 — route #3 structural pins via KEEPSubsAt
(commit-show → first-parent; ?a#b → a/b), sha1hex pins, owned
path8b paths, URIMake-built child URIs; graf untouched. 288/288 green.
DIFF-001 complete.