Support 'diff=pgm' attribute

This enhances the attributes mechanism so that external programs
meant for existing GIT_EXTERNAL_DIFF interface can be specifed
per path.

To configure such a custom diff driver, first define a custom
diff driver in the configuration:

	[diff "my-c-diff"]
		command = <<your command string comes here>>

Then mark the paths that you want to use this custom driver
using the attribute mechanism.

	*.c	diff=my-c-diff

The intent of this separation is that the attribute mechanism is
used for specifying the type of the contents, while the
configuration mechanism is used to define what needs to be done
to that type of the contents, which would be specific to both
platform and personal taste.

Signed-off-by: Junio C Hamano <junkio@cox.net>
5 files changed
tree: c601842acbc36c310701f6e3f00d79364e42da86
  1. arm/
  2. compat/
  3. contrib/
  4. Documentation/
  5. git-gui/
  6. gitweb/
  7. mozilla-sha1/
  8. perl/
  9. ppc/
  10. t/
  11. templates/
  12. xdiff/
  13. .gitignore
  14. .mailmap
  15. alloc.c
  16. archive-tar.c
  17. archive-zip.c
  18. archive.h
  19. attr.c
  20. attr.h
  21. base85.c
  22. blob.c
  23. blob.h
  24. builtin-add.c
  25. builtin-annotate.c
  26. builtin-apply.c
  27. builtin-archive.c
  28. builtin-blame.c
  29. builtin-branch.c
  30. builtin-bundle.c
  31. builtin-cat-file.c
  32. builtin-check-attr.c
  33. builtin-check-ref-format.c
  34. builtin-checkout-index.c
  35. builtin-commit-tree.c
  36. builtin-config.c
  37. builtin-count-objects.c
  38. builtin-describe.c
  39. builtin-diff-files.c
  40. builtin-diff-index.c
  41. builtin-diff-tree.c
  42. builtin-diff.c
  43. builtin-fetch--tool.c
  44. builtin-fmt-merge-msg.c
  45. builtin-for-each-ref.c
  46. builtin-fsck.c
  47. builtin-gc.c
  48. builtin-grep.c
  49. builtin-init-db.c
  50. builtin-log.c
  51. builtin-ls-files.c
  52. builtin-ls-tree.c
  53. builtin-mailinfo.c
  54. builtin-mailsplit.c
  55. builtin-merge-base.c
  56. builtin-merge-file.c
  57. builtin-mv.c
  58. builtin-name-rev.c
  59. builtin-pack-objects.c
  60. builtin-pack-refs.c
  61. builtin-prune-packed.c
  62. builtin-prune.c
  63. builtin-push.c
  64. builtin-read-tree.c
  65. builtin-reflog.c
  66. builtin-rerere.c
  67. builtin-rev-list.c
  68. builtin-rev-parse.c
  69. builtin-revert.c
  70. builtin-rm.c
  71. builtin-runstatus.c
  72. builtin-shortlog.c
  73. builtin-show-branch.c
  74. builtin-show-ref.c
  75. builtin-stripspace.c
  76. builtin-symbolic-ref.c
  77. builtin-tar-tree.c
  78. builtin-unpack-objects.c
  79. builtin-update-index.c
  80. builtin-update-ref.c
  81. builtin-upload-archive.c
  82. builtin-verify-pack.c
  83. builtin-write-tree.c
  84. builtin.h
  85. cache-tree.c
  86. cache-tree.h
  87. cache.h
  88. check-builtins.sh
  89. check-racy.c
  90. color.c
  91. color.h
  92. combine-diff.c
  93. commit.c
  94. commit.h
  95. config.c
  96. config.mak.in
  97. configure.ac
  98. connect.c
  99. convert-objects.c
  100. convert.c
  101. copy.c
  102. COPYING
  103. csum-file.c
  104. csum-file.h
  105. ctype.c
  106. daemon.c
  107. date.c
  108. decorate.c
  109. decorate.h
  110. delta.h
  111. diff-delta.c
  112. diff-lib.c
  113. diff.c
  114. diff.h
  115. diffcore-break.c
  116. diffcore-delta.c
  117. diffcore-order.c
  118. diffcore-pickaxe.c
  119. diffcore-rename.c
  120. diffcore.h
  121. dir.c
  122. dir.h
  123. dump-cache-tree.c
  124. entry.c
  125. environment.c
  126. exec_cmd.c
  127. exec_cmd.h
  128. fast-import.c
  129. fetch-pack.c
  130. fetch.c
  131. fetch.h
  132. generate-cmdlist.sh
  133. git-add--interactive.perl
  134. git-am.sh
  135. git-applymbox.sh
  136. git-applypatch.sh
  137. git-archimport.perl
  138. git-bisect.sh
  139. git-checkout.sh
  140. git-clean.sh
  141. git-clone.sh
  142. git-commit.sh
  143. git-compat-util.h
  144. git-cvsexportcommit.perl
  145. git-cvsimport.perl
  146. git-cvsserver.perl
  147. git-fetch.sh
  148. git-instaweb.sh
  149. git-lost-found.sh
  150. git-ls-remote.sh
  151. git-merge-octopus.sh
  152. git-merge-one-file.sh
  153. git-merge-ours.sh
  154. git-merge-resolve.sh
  155. git-merge-stupid.sh
  156. git-merge.sh
  157. git-mergetool.sh
  158. git-p4import.py
  159. git-parse-remote.sh
  160. git-pull.sh
  161. git-quiltimport.sh
  162. git-rebase.sh
  163. git-relink.perl
  164. git-remote.perl
  165. git-repack.sh
  166. git-request-pull.sh
  167. git-reset.sh
  168. git-send-email.perl
  169. git-sh-setup.sh
  170. git-svn.perl
  171. git-svnimport.perl
  172. git-tag.sh
  173. git-verify-tag.sh
  174. GIT-VERSION-GEN
  175. git.c
  176. git.spec.in
  177. gitk
  178. grep.c
  179. grep.h
  180. hash-object.c
  181. help.c
  182. http-fetch.c
  183. http-push.c
  184. http.c
  185. http.h
  186. ident.c
  187. imap-send.c
  188. index-pack.c
  189. INSTALL
  190. interpolate.c
  191. interpolate.h
  192. list-objects.c
  193. list-objects.h
  194. local-fetch.c
  195. lockfile.c
  196. log-tree.c
  197. log-tree.h
  198. Makefile
  199. match-trees.c
  200. merge-file.c
  201. merge-index.c
  202. merge-recursive.c
  203. merge-tree.c
  204. mktag.c
  205. mktree.c
  206. object-refs.c
  207. object.c
  208. object.h
  209. pack-check.c
  210. pack-redundant.c
  211. pack.h
  212. pager.c
  213. patch-delta.c
  214. patch-id.c
  215. patch-ids.c
  216. patch-ids.h
  217. path-list.c
  218. path-list.h
  219. path.c
  220. peek-remote.c
  221. pkt-line.c
  222. pkt-line.h
  223. quote.c
  224. quote.h
  225. reachable.c
  226. reachable.h
  227. read-cache.c
  228. README
  229. receive-pack.c
  230. reflog-walk.c
  231. reflog-walk.h
  232. refs.c
  233. refs.h
  234. revision.c
  235. revision.h
  236. rsh.c
  237. rsh.h
  238. run-command.c
  239. run-command.h
  240. send-pack.c
  241. server-info.c
  242. setup.c
  243. sha1_file.c
  244. sha1_name.c
  245. shallow.c
  246. shell.c
  247. show-index.c
  248. sideband.c
  249. sideband.h
  250. ssh-fetch.c
  251. ssh-pull.c
  252. ssh-push.c
  253. ssh-upload.c
  254. strbuf.c
  255. strbuf.h
  256. tag.c
  257. tag.h
  258. tar.h
  259. test-chmtime.c
  260. test-date.c
  261. test-delta.c
  262. test-genrandom.c
  263. test-match-trees.c
  264. test-sha1.c
  265. test-sha1.sh
  266. trace.c
  267. tree-diff.c
  268. tree-walk.c
  269. tree-walk.h
  270. tree.c
  271. tree.h
  272. unpack-file.c
  273. unpack-trees.c
  274. unpack-trees.h
  275. update-server-info.c
  276. upload-pack.c
  277. usage.c
  278. utf8.c
  279. utf8.h
  280. var.c
  281. write_or_die.c
  282. wt-status.c
  283. wt-status.h
  284. xdiff-interface.c
  285. xdiff-interface.h