DYD

CI Hex pm License

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

via homebrew:

shell brew tap synchronal/tap brew install dyd

via cargo:

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"

difftool = "git" # Uses the configured default GUI difftool. difftool = "github" # Uses the open command to open a diff in the GitHub site. difftool = "git difftool --dir-diff --tool=intellij -y ${DIFF}" # Arbitrary commands may be set.

[remotes]

[remotes.dyd] name = "DYD" origin = "git@github.com:synchronal/dyd"

[remotes.tui] name = "TUI" origin = "git@github.com:fdehau/tui-rs"

[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 DYD_MANIFEST_PATH="dyd.toml" dyd diff

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

GitHub (browser)

When all repos in a manifest have their origins in GitHub, dyd can be configured to open diffs in the system's default browser.

Add to your dyd.toml manifest file:

toml difftool = "github"

IntelliJ IDEA

(You can download IntelliJ IDEA Community Edition for free, which has a pretty good graphical difftool.)

Add to your ~/.gitconfig file:

toml [diff] tool = intellij guitool = intellij [difftool "intellij"] cmd = open -nWa 'IntelliJ IDEA CE.app' --args diff $(realpath "$LOCAL") $(realpath "$REMOTE") [difftool] prompt=false

Add to your dyd.toml manifest file:

toml difftool = "git difftool --dir-diff --tool=intellij -y ${DIFF}"

Others

References