Scroll to navigation

git-annex-diffdriver(1) General Commands Manual git-annex-diffdriver(1)


git-annex-diffdriver - git diff driver


git annex diffdriver [--get,--text] [-- --diffopts --]

git annex diffdriver -- cmd --cmdopts --


Normally, git diff when run on annexed files displays the changes that are staged in git, eg annex symlinks and pointers. This command allows git diff to diff the content of annexed files instead.

This command can be used either as a simple text differ, or as a shim that runs an external git diff driver.

If some of your annexed files are textual in form, and can be usefully diffed with diff(1), you can configure git to use this command to diff them, by configuring .gitattributes to contain eg *.txt diff=annextextdiff and setting git config diff.annextextdiff.command "git annex diffdriver --text".

If your annexed files are not textual in form, you will need an external diff driver program that is able to diff the file format(s) you use. See git's documentation of GIT_EXTERNAL_DIFF and gitattributes(5)'s documentation of external diff drivers.

Normally, when using git diff with an external diff driver, it will not see the contents of annexed files, since git passes to it the git-annex symlinks or pointer files. This command works around the problem, by running the real external diff driver, and passing it the paths to the annexed content. Configure git to use "git-annex diffdriver -- cmd params --" as the external diff driver, where cmd is the external diff driver you want it to run, and params are any extra parameters to pass to it. Note the trailing "--", which is required.

For example, to use the j-c-diff program as the external diff driver, set GIT_EXTERNAL_DIFF="git-annex diffdriver -- j-c-diff --"


To get the contents of annexed files from remotes when they are not already present, use the --get option. The file contents will remain in the repository for later use until dropped in the usual ways.

To diff text files with diff(1), use the --text option. To pass additional options to diff(1), use eg "--text -- --color --"

To use an external diff driver command, the options must start with "--" followed by the diff driver command, its options, and another "--"

Also the git-annex-common-options(1) can be used.




Joey Hess <>