Show HN: Deff – Side-by-side Git diff review in your terminal
github.com
Would love to get some feedback
github.com
Would love to get some feedback
I admit I haven't looked super hard yet, I settled on configuring git to use delta [0] for now and I'm happy with it, but I'm curious if anyone has a workflow for reviewing/iterating on diffs in the terminal that they'd be willing to share. Also open to being told that I'm lightyears behind and that there's a better mental model for this.
This in conjunction with gh-dash [1] to launch a review can get you a pretty nice TUI review workflow.
[0] https://github.com/pwntester/octo.nvim
[1] https://github.com/dlvhdr/gh-dash
*Edit: I see you meant providing feedback to an agent, not a PR. Well that's what I get for reading too fast.
https://github.com/micro-editor/plugin-channel
Link to Micro editor: https://micro-editor.github.io/
Once you submit it outputs to stdout and the agent reads your comments and actions them.
The two are kind of similar if I remember correctly, and both offer a lot of config options to change the style and more. I mostly use it for diffs involving long lines since it highlights changes within a line, which makes it easier to spot such edits.
I have an alias set in `~/.gitconfig` to pipe the output of `git diff` (with options) to `diff-so-fancy` with `git diffs`:
diffs = "!f() { git diff $@ | diff-so-fancy; }; f"
[1] https://github.com/so-fancy/diff-so-fancy- even faster, especially if you have couple thousand files and just want to press "u" for some time and see them very quickly all get staged
- has this split-view diff opened for a file
Otherwise tig is one of my favorite tools to quickly commit stuff without too many key presses but with review abilities, i have its "tig status" aliased to "t"
git difftool --tool=vimdiffvim folds are fully programmable. For me a bigger issue was git calling vimdiff for each file, which I fixed with my own difftool: https://gist.github.com/PhilipRoman/60066716b5fa09fcabfa6c95...
(I found that my mac machine doesn't support the '-printf' option, and also I was attempting to run 'git bvd main' on a branch but it seems it does a recursive directory diff, so I'll use 'git diff --name-only' as the input to the awk command).
Edit: worked nicely! I haven't used tabs much in vim so is a slightly new workflow but otherwise very handy
If you configure vimdiff as the difftool in your git config, just doing a `git diff` would show you the diff for each file sequentially.
[tpope's vim-fugitive]: https://github.com/tpope/vim-fugitive
I'll paste it next time I'm on that machine.
[on sourcehut]: https://git.sr.ht/~jbaber/shadiff
[on github]: https://github.com/jbaber/shadiff
emacs --eval='(ediff-files "file1" "file2")'
(The “|” key toggles side-by-side view.)And a link to an asciicinema would help a lot too.
---
Also, I'm not sure how useful the side-by-side view is.
The second example (https://github.com/flamestro/deff/blob/main/docs/example_02....) is confusing.
The left side has lines 1365-1371 having the same code as lines 1374-1380 on the right side, yet they're not aligned with each other.
Most diff views would put padding between lines 1364-1365 on the left side so lines 1365-1371 are aligned with 1374-1380 on the right side.
diff --side-by-side
or use `-y` for short-hand.It uses opentui, the same framework uses by opencode.
It can also render diffs to images, pdf and html. Very useful for agents to share diffs in remote environments like Openclaw or Kimaki
Great work on deff, would love to brainstorm here :)
I use it with
darcs diff --diff-command="kitten diff %1 %2"I feel Kitty doesn't get enough love, it's all ghostty this, ghostty that, but Kitty has been my top performing terminal emulator for 10 years now.
What is most useful though is a 3-panel setup, like JetBrains -- still the best git client I have worked with.
[diff]
tool = intellij
[difftool "intellij"]
cmd = idea diff \"$LOCAL\" \"$REMOTE\"
[merge]
tool = intellij
[mergetool "intellij"]
cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = trueIt probably explains why there is so many data leaks recently but it is like we did a 20 years jump back in time in terms of security in just a few years.
It does not install binaries, it builds the binary by checking out the project basically. You can also do the process manually and use the tool.
I bet 99.9999% of users do not review the code nor the install script.
As I said, it's like being back 20 years back in the past.
But seriously, I think there's a bit of overzealousness/misalignment in security lately with a disregard for usability and privacy, making people less tolerant of dealing with inconveniences.
...I really just like the way the Jetbrains IDEs do it, and I wish there were a TUI version that I could launch automatically from the git cli.