Hi joey,

Currently, getting a useful diff between annexed file versions is quite involved (setting up git-annex diffdriver).

It would be very nice if showing changes between annexed files was a little more straight-forward and ideally without any user config needed. UI suggestions:

  • git annex diff: would behave exactly like git diff, but operatign on both unannexed and annexed contents
    • ideally re-implementing all its options (e.g. --word-diff, --word-diff-regex, etc.)
    • would need a diff implementation in Haskell (surely there is one)
    • sounds complicated to do TBH
  • Teaching git diff to use the annexed content instead of the pointer links/files
    • software like nbstripout passes the git-tracked contents through a filter before diffing. This sounds like git-annex could do the same to add straight-forward git diff support without user configuration.
    • git-annex already has a * filter=annex attribute in place, for text diffing there apparently needs to be a * diff=annex attribute and a [diff "annex"] textconv=git-annex-output-content-instead-of-pointer config.
    • even if the above works, I don't know how to temporarily switch this off without uncommenting the textconv e.g. with git config --edit. Sometimes you just want to see the actual hashes of old and new file.

Maybe git annex diffdriver kind of does part of this, but I don't really understand what it actually does.

Here other posts related to diffing:

  • https://git-annex.branchable.com/forum/enabling_git-annex-diffdriver_for_gitk/
  • https://git-annex.branchable.com/todo/--get_option_for_diffdriver/

What do you think?

Cheers, Yann

PS: Thank you very much for git-annex, it's awesome! I'm giving a git-annex workshop next weekend @Tuebix, really looking forward to it.

fixed --Joey