It can be difficult to tell what has actually changed when running git difftool on a .kicad_pcb file because KiCad embeds timestamps into the file that change when the file is modified:
Luckly, we can tell git to use a custom difftool using the --tool=<tool> argument.
First, we need to create a custom shell script to pass to git difftool --tool=<tool>. I use Kaleidoscope.app as my git difftool on macOS, so I named this script kicad-ksdiff and put it a directory on my $PATH:
#!/bin/bash
# Run with the following command:
# git difftool --tool=kicad-ksdiff board.kicad_pcb
# From https://forum.kicad.info/t/a-better-difftool-for-kicad/40042/3
tstamp() {
sed -E 's/([(]tstamp )[^)]*/\1-/g' "$@";
}
ksdiff <(tstamp "$1") <(tstamp "$2")
Next, we need to configure git to call this script when git difftool --tool=kicad-ksdiff is invoked. Put the following in your global .gitconfig file:
[diff]
tool = Kaleidoscope
[difftool "kicad-ksdiff"]
cmd = kicad-ksdiff $LOCAL $REMOTE
Now, running git difftool --tool=kicad-ksdiff <board>.kicad_pcb ignores any timestamp changes and only shows changes to the actual design:
Revision History Link to heading
| Revision | Date | Description |
|---|---|---|
| 1 | 02/06/2023 | Initial release |
| 2 | 02/07/2023 | Update script based on https://forum.kicad.info/t/a-better-difftool-for-kicad/40042/3 |
Feedback Link to heading
Anything I got wrong? Have you found better ways to filter out timestamp changes?
Let me know in the comments below.