Code

Merge branch 'jk/diff-driver-binary-doc' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 19 Jan 2011 16:26:44 +0000 (08:26 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Jan 2011 16:26:44 +0000 (08:26 -0800)
* jk/diff-driver-binary-doc:
  docs: explain diff.*.binary option

1  2 
Documentation/gitattributes.txt

index fbf507a7ee3694f99fb236347fc0c7f352b7e50e,f3f880e270ae801be31681b041a7cfe1a2dec116..4641d49f76b0d0498cc5a66ae2458c6bc89ed424
@@@ -553,27 -414,40 +553,60 @@@ because it quickly conveys the changes 
  should generate it separately and send it as a comment _in
  addition to_ the usual binary diff that you might send.
  
 +Because text conversion can be slow, especially when doing a
 +large number of them with `git log -p`, git provides a mechanism
 +to cache the output and use it in future diffs.  To enable
 +caching, set the "cachetextconv" variable in your diff driver's
 +config. For example:
 +
 +------------------------
 +[diff "jpg"]
 +      textconv = exif
 +      cachetextconv = true
 +------------------------
 +
 +This will cache the result of running "exif" on each blob
 +indefinitely. If you change the textconv config variable for a
 +diff driver, git will automatically invalidate the cache entries
 +and re-run the textconv filter. If you want to invalidate the
 +cache manually (e.g., because your version of "exif" was updated
 +and now produces better output), you can remove the cache
 +manually with `git update-ref -d refs/notes/textconv/jpg` (where
 +"jpg" is the name of the diff driver, as in the example above).
  
+ Marking files as binary
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ Git usually guesses correctly whether a blob contains text or binary
+ data by examining the beginning of the contents. However, sometimes you
+ may want to override its decision, either because a blob contains binary
+ data later in the file, or because the content, while technically
+ composed of text characters, is opaque to a human reader. For example,
+ many postscript files contain only ascii characters, but produce noisy
+ and meaningless diffs.
+ The simplest way to mark a file as binary is to unset the diff
+ attribute in the `.gitattributes` file:
+ ------------------------
+ *.ps -diff
+ ------------------------
+ This will cause git to generate `Binary files differ` (or a binary
+ patch, if binary patches are enabled) instead of a regular diff.
+ However, one may also want to specify other diff driver attributes. For
+ example, you might want to use `textconv` to convert postscript files to
+ an ascii representation for human viewing, but otherwise treat them as
+ binary files. You cannot specify both `-diff` and `diff=ps` attributes.
+ The solution is to use the `diff.*.binary` config option:
+ ------------------------
+ [diff "ps"]
+   textconv = ps2ascii
+   binary = true
+ ------------------------
  Performing a three-way merge
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~