A structured diff between two snapshots (or trees).
Nothing here requires parsing unified diff text: files, hunks, and lines are data. A formatter may render this as unified diff, but the structured result is the API.
format: :summary populates only file-level fields; :stats adds
per-file line counts; :patch adds hunks and lines.
Summary
Types
@type t() :: %Gitility.Diff{ files: [Gitility.Diff.File.t()], stats: Gitility.Stats.t(), truncated: boolean(), warnings: [Gitility.Page.warning()] }