Skip to content

[Git] Stop inlining binary literals in the per-commit diff - #38

Merged
KCaverly merged 1 commit into
mainfrom
ct/diff_view/7e62f7d8
Jul 26, 2026
Merged

[Git] Stop inlining binary literals in the per-commit diff#38
KCaverly merged 1 commit into
mainfrom
ct/diff_view/7e62f7d8

Conversation

@KCaverly

@KCaverly KCaverly commented Jul 26, 2026

Copy link
Copy Markdown
Owner

DiffCommit/NumstatCommit passed --binary, which the branch-wide
DiffAgainstBase never did. --binary is for producing appliable patches: it
makes git inline a base85 "GIT binary patch" literal for every changed
binary file. A 3KB blob expands to 123 lines; a few hundred KB is enough to
exhaust the viewer's 20k-line cap and leave the preview pane showing
nothing but base85.

It also mis-colours: git's base85 alphabet includes + and -, so the diff
body styler paints scattered literal lines as additions and deletions.

Dropping the flag yields the usual one-line "Binary files a/x and b/x
differ", matching DiffAgainstBase. The numstat path is unaffected — it
already reported binary files as Binary with zero counts, so the file index
still renders them as "binary".

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com


Stack (bottom → top):

  1. [Git] Stop inlining binary literals in the per-commit diff #38 ← this PR
  2. [UI] Re-prime the stack preview when the status behind it changes #39
  3. [Git] Stop returning quoted, octal-escaped untracked paths #40
  4. [Git] Add DiffUntracked to render untracked file contents #41
  5. [UI] Show uncommitted work as a row in the stack #42
  6. [UI] Name one way out of the stack preview #43
  7. [UI] Give d the preview and esc the way out #44
  8. [UI] Drop the branch-diff jump from the stack screen #45
  9. [UI] Stop the stack preview overrunning a narrow terminal #46
  10. [Git] Pin the diff flags the body parser depends on #47
  11. [UI] Teach both diff viewers the same file-jump key #48
  12. [Diff] Thread the [diff] config through the viewer and zoom with z #49
  13. [Git] Carry diff args and excludes through every diff call #50
  14. [Diff] Add the external diff pager package #51
  15. [Config] Accept a [diff] section with an optional pager #52
  16. [Docs] Document the diff viewer settings #53

DiffCommit/NumstatCommit passed --binary, which the branch-wide
DiffAgainstBase never did. --binary is for producing appliable patches: it
makes git inline a base85 "GIT binary patch" literal for every changed
binary file. A 3KB blob expands to 123 lines; a few hundred KB is enough to
exhaust the viewer's 20k-line cap and leave the preview pane showing
nothing but base85.

It also mis-colours: git's base85 alphabet includes + and -, so the diff
body styler paints scattered literal lines as additions and deletions.

Dropping the flag yields the usual one-line "Binary files a/x and b/x
differ", matching DiffAgainstBase. The numstat path is unaffected — it
already reported binary files as Binary with zero counts, so the file index
still renders them as "binary".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ct-stack-id: 7e62f7d8
@KCaverly
KCaverly force-pushed the ct/diff_view/7e62f7d8 branch from de84f37 to 228e192 Compare July 26, 2026 19:23
@KCaverly
KCaverly merged commit 4706312 into main Jul 26, 2026
2 checks passed
@KCaverly
KCaverly deleted the ct/diff_view/7e62f7d8 branch July 26, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant