# DYD
[](https://github.com/synchronal/dyd/actions)
[](https://crates.io/crates/dyd)
[](https://github.com/synchronal/dyd/blob/main/LICENSE.md)
Daily diff.
This command line tool facilitates the viewing of git diffs across multiple projects, across
multiple days. See what you're doing across teams, and across all the git repos your teams
manage.
## Installation
```shell
cargo install dyd
```
Configure git with a GUI difftool:
```toml
[diff]
tool = Kaleidoscope
guitool = Kaleidoscope
[difftool]
prompt = false
[difftool "Kaleidoscope"]
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
[mergetool "Kaleidoscope"]
cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
trustExitCode = true
```
## Usage
Create a manifest file at `dyd.toml` with the following format:
```toml
since = "3 days ago"
# " ^^^^ days | weeks | months
## difftool = "my diff tool"
[remotes]
[remotes.dyd]
name = "DYD"
origin = "git@github.com:synchronal/dyd"
[remotes.tui]
name = "TUI"
origin = "git@github.com:fdehau/tui-rs"
```
Ensure that your shell is authorized with the origin. DYD will *not* route input to the SSH agent.
```shell
ssh-add ~/.ssh/id_ed25519
```
Open the diff tool:
```shell
dyd -m dyd.toml
dyd --manifest dyd.toml
```
Keymap:
```
h l <left> <right> <tab> - switch panes
j k <up> <down> - change current selection
d - open git gui difftool
q <esc> - quit
```
## Other difftools
IntelliJ IDEA:
```toml
[diff]
guitool = intellij
[difftool "intellij"]
cmd = /Applications/IntelliJ\\ IDEA\\ CE.app/Contents/MacOS/idea diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
```
Manifest:
```toml
difftool = "git difftool --dir-diff -g -y"
```
TODO:
- gitx
- kdiff3
- ???
## References
- https://github.com/orhun/rust-tui-template