Martin Thoma
Martin Thoma

Reputation: 136379

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)?

I've configured git to use meld like this:

  1. Create a script called git-meld:

    #!/bin/bash
    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.

Upvotes: 10

Views: 3630

Answers (2)

twalberg
twalberg

Reputation: 62389

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...

Upvotes: 12

berkes
berkes

Reputation: 27563

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. 

Upvotes: 0

Related Questions