How can I add a different Git diff tool for PDF?

I currently use meld as a Git diff tool. This works great, but I also have some PDF files under version control. Always when I make git diff I get ugly messages that inform me, that meld can’t compare those binary files.

Today, I’ve found diffpdf which works great. But how can I configure git to use diffpdf for PDF (and only for them)?

  • Phpstorm git attempts to commit workspace.xml
  • git svn clone fails with “error: git-svn died of signal 11”
  • What problems might I face keeping a directory under git and svn control?
  • Is it correct that subversion, but not git, allows empty folders?
  • Switch from SVN to GIT for C# developments?
  • Getting specific folder structure from git
  • I’ve configured git to use meld like this:

    1. Create a script called git-meld:

      meld "$2" "$5"
    2. Make it executable: chmod +x git-meld

    3. Add it to my config file: git config --global diff.external git-meld

    But obviously I can’t simply adapt this way to use both, diffpdf and meld.

  • Not able to create staging instance on heroku
  • Cannot push Git to remote repository with http/https
  • How can I change my git timezone offset?
  • Delete folder locally but keep remotely
  • Developing in eclipse without using any git eclipse plugin?
  • Drawbacks of using GIT-SVN over other SVN clients?
  • 2 Solutions collect form web for “How can I add a different Git diff tool for PDF?”

    You need to look at the gitattributes manual page. Basically, you create an external diff driver that specifies a custom command to use for comparing a specific type of file (this goes in ~/.gitconfig or ${PROJECT}/.git/config):

    [diff "pdfdiff"]
        command = diffpdf

    Then you specify that certain types of files use that diff driver (in ${PROJECT}/.gitattributes or {PROJECT}/some/subdir/.gitattributes):

    *.pdf diff=pdfdiff

    Then everything except pdf files will use your normal git diff defaults, but pdf files will call diffpdf when you git diff them…

    You can use git difftool (man git difftool).

    $ git difftool #opens in the tool defined in config: git config --get diff.tool
    $ git difftool --tool meld # Opens in meld, regardless of what you configured.
    $ git difftool --tool diffpdf # Opens in diffpdf. 
    Git Baby is a git and github fan, let's start git clone.