pub fn reconcile_changes(
repo_dir: &Path,
since_sha: Option<&str>,
) -> Vec<GitChange>Expand description
Collect every file change in repo_dir worth surfacing in a
session receipt: working-tree modifications (staged or not),
committed-since-since_sha changes (when provided), and untracked
files.
Deduplicated across the three sources so a single file shows up
once. When git diff --numstat reports additions/deletions for a
path, those are attached; binary files leave them as None.
Returns an empty Vec if repo_dir isn’t a git repo or git isn’t
available – callers (i.e. session close) should treat absence as
“nothing to reconcile” and continue.