2013-10-28 75 views
5

我目前使用meld作爲Git diff工具。這很好,但我也有版本控制下的一些PDF文件。總是當我製作git diff時,我收到了醜陋的消息,告訴我,融合無法比較這些二進制文件。如何爲PDF添加不同的Git diff工具?

今天,我發現diffpdf這很好。但是,我怎樣才能配置git使用PDF的diffpdf(並只爲他們)?

我已經配置了git的使用合併這樣的:

  1. 創建一個名爲git-meld腳本:

    #!/bin/bash 
    meld "$2" "$5" 
    
  2. 使其可執行:chmod +x git-meld

  3. 將它添加到我的配置文件:git config --global diff.external git-meld

但顯然我不能簡單地用這種方式來使用diffpdf和meld。

回答

7

您需要查看gitattributes手冊頁。基本上,你創建一個指定自定義命令使用比較特定文件類型的外部差異驅動程序(這正好~/.gitconfig${PROJECT}/.git/config):

[diff "pdfdiff"] 
    command = diffpdf 

然後您可以指定某些類型的文件使用DIFF驅動程序(在${PROJECT}/.gitattributes{PROJECT}/some/subdir/.gitattributes):

*.pdf diff=pdfdiff 

然後將除了PDF文件,一切都將使用普通git diff違約,但PDF文件會打電話給diffpdf當你git diff他們...

+0

+1,這幾乎是我想要的。我可以指定全球,我希望pdfs與pdfdiff進行比較嗎? (而不是僅限於項目範圍) –

+1

對於單個用戶的「全局」,有'core.attributesfile'配置選項,它指定一個文件,該文件將應用於所有用戶使用的項目(在'〜/中指定)。 gitconfig'文件)。對於系統範圍的「全局」,有'/ etc/gitattributes'(假設你使用的是發行版提供的'git'版本 - 它可能是'/ usr/local/etc/gitattributes'或者其他東西git help gitattributes'的頂部部分記錄了這一切。 – twalberg

+2

謝謝!(你不想把評論放到你的答案中嗎?) –

0

您可以使用git difftoolman 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.