Introduce commit notes

Commit notes are blobs which are shown together with the commit
message.  These blobs are taken from the notes ref, which you can
configure by the config variable core.notesRef, which in turn can
be overridden by the environment variable GIT_NOTES_REF.

The notes ref is a branch which contains "files" whose names are
the names of the corresponding commits (i.e. the SHA-1).

The rationale for putting this information into a ref is this: we
want to be able to fetch and possibly union-merge the notes,
maybe even look at the date when a note was introduced, and we
want to store them efficiently together with the other objects.

This patch has been improved by the following contributions:
- Thomas Rast: fix core.notesRef documentation
- Tor Arne Vestbø: fix printing of multi-line notes
- Alex Riesen: Using char array instead of char pointer costs less BSS
- Johan Herland: Plug leak when msg is good, but msglen or type causes return

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Tor Arne Vestbø <tavestbo@trolltech.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_commit_notes(): Plug memory leak when 'if' triggers, but not because of read_sha1_file() failure
9 files changed
tree: a29079be6efc607f4b73fba11cfa56d04b2ce2ec
  1. block-sha1/
  2. compat/
  3. contrib/
  4. Documentation/
  5. git-gui/
  6. gitk-git/
  7. gitweb/
  8. perl/
  9. ppc/
  10. t/
  11. templates/
  12. xdiff/
  13. .gitattributes
  14. .gitignore
  15. .mailmap
  16. abspath.c
  17. advice.c
  18. advice.h
  19. alias.c
  20. alloc.c
  21. archive-tar.c
  22. archive-zip.c
  23. archive.c
  24. archive.h
  25. attr.c
  26. attr.h
  27. base85.c
  28. bisect.c
  29. bisect.h
  30. blob.c
  31. blob.h
  32. branch.c
  33. branch.h
  34. builtin-add.c
  35. builtin-annotate.c
  36. builtin-apply.c
  37. builtin-archive.c
  38. builtin-bisect--helper.c
  39. builtin-blame.c
  40. builtin-branch.c
  41. builtin-bundle.c
  42. builtin-cat-file.c
  43. builtin-check-attr.c
  44. builtin-check-ref-format.c
  45. builtin-checkout-index.c
  46. builtin-checkout.c
  47. builtin-clean.c
  48. builtin-clone.c
  49. builtin-commit-tree.c
  50. builtin-commit.c
  51. builtin-config.c
  52. builtin-count-objects.c
  53. builtin-describe.c
  54. builtin-diff-files.c
  55. builtin-diff-index.c
  56. builtin-diff-tree.c
  57. builtin-diff.c
  58. builtin-fast-export.c
  59. builtin-fetch--tool.c
  60. builtin-fetch-pack.c
  61. builtin-fetch.c
  62. builtin-fmt-merge-msg.c
  63. builtin-for-each-ref.c
  64. builtin-fsck.c
  65. builtin-gc.c
  66. builtin-grep.c
  67. builtin-help.c
  68. builtin-init-db.c
  69. builtin-log.c
  70. builtin-ls-files.c
  71. builtin-ls-remote.c
  72. builtin-ls-tree.c
  73. builtin-mailinfo.c
  74. builtin-mailsplit.c
  75. builtin-merge-base.c
  76. builtin-merge-file.c
  77. builtin-merge-ours.c
  78. builtin-merge-recursive.c
  79. builtin-merge.c
  80. builtin-mktree.c
  81. builtin-mv.c
  82. builtin-name-rev.c
  83. builtin-pack-objects.c
  84. builtin-pack-refs.c
  85. builtin-prune-packed.c
  86. builtin-prune.c
  87. builtin-push.c
  88. builtin-read-tree.c
  89. builtin-receive-pack.c
  90. builtin-reflog.c
  91. builtin-remote.c
  92. builtin-replace.c
  93. builtin-rerere.c
  94. builtin-reset.c
  95. builtin-rev-list.c
  96. builtin-rev-parse.c
  97. builtin-revert.c
  98. builtin-rm.c
  99. builtin-send-pack.c
  100. builtin-shortlog.c
  101. builtin-show-branch.c
  102. builtin-show-ref.c
  103. builtin-stripspace.c
  104. builtin-symbolic-ref.c
  105. builtin-tag.c
  106. builtin-tar-tree.c
  107. builtin-unpack-objects.c
  108. builtin-update-index.c
  109. builtin-update-ref.c
  110. builtin-update-server-info.c
  111. builtin-upload-archive.c
  112. builtin-verify-pack.c
  113. builtin-verify-tag.c
  114. builtin-write-tree.c
  115. builtin.h
  116. bundle.c
  117. bundle.h
  118. cache-tree.c
  119. cache-tree.h
  120. cache.h
  121. check-builtins.sh
  122. check-racy.c
  123. check_bindir
  124. color.c
  125. color.h
  126. combine-diff.c
  127. command-list.txt
  128. commit.c
  129. commit.h
  130. config.c
  131. config.mak.in
  132. configure.ac
  133. connect.c
  134. convert.c
  135. copy.c
  136. COPYING
  137. csum-file.c
  138. csum-file.h
  139. ctype.c
  140. daemon.c
  141. date.c
  142. decorate.c
  143. decorate.h
  144. delta.h
  145. diff-delta.c
  146. diff-lib.c
  147. diff-no-index.c
  148. diff.c
  149. diff.h
  150. diffcore-break.c
  151. diffcore-delta.c
  152. diffcore-order.c
  153. diffcore-pickaxe.c
  154. diffcore-rename.c
  155. diffcore.h
  156. dir.c
  157. dir.h
  158. editor.c
  159. entry.c
  160. environment.c
  161. exec_cmd.c
  162. exec_cmd.h
  163. fast-import.c
  164. fetch-pack.h
  165. fixup-builtins
  166. fsck.c
  167. fsck.h
  168. generate-cmdlist.sh
  169. git-add--interactive.perl
  170. git-am.sh
  171. git-archimport.perl
  172. git-bisect.sh
  173. git-compat-util.h
  174. git-cvsexportcommit.perl
  175. git-cvsimport.perl
  176. git-cvsserver.perl
  177. git-difftool--helper.sh
  178. git-difftool.perl
  179. git-filter-branch.sh
  180. git-instaweb.sh
  181. git-lost-found.sh
  182. git-merge-octopus.sh
  183. git-merge-one-file.sh
  184. git-merge-resolve.sh
  185. git-mergetool--lib.sh
  186. git-mergetool.sh
  187. git-parse-remote.sh
  188. git-pull.sh
  189. git-quiltimport.sh
  190. git-rebase--interactive.sh
  191. git-rebase.sh
  192. git-relink.perl
  193. git-repack.sh
  194. git-request-pull.sh
  195. git-send-email.perl
  196. git-sh-setup.sh
  197. git-stash.sh
  198. git-submodule.sh
  199. git-svn.perl
  200. GIT-VERSION-GEN
  201. git-web--browse.sh
  202. git.c
  203. git.spec.in
  204. graph.c
  205. graph.h
  206. grep.c
  207. grep.h
  208. hash-object.c
  209. hash.c
  210. hash.h
  211. help.c
  212. help.h
  213. http-fetch.c
  214. http-push.c
  215. http-walker.c
  216. http.c
  217. http.h
  218. ident.c
  219. imap-send.c
  220. index-pack.c
  221. INSTALL
  222. levenshtein.c
  223. levenshtein.h
  224. list-objects.c
  225. list-objects.h
  226. ll-merge.c
  227. ll-merge.h
  228. lockfile.c
  229. log-tree.c
  230. log-tree.h
  231. mailmap.c
  232. mailmap.h
  233. Makefile
  234. match-trees.c
  235. merge-file.c
  236. merge-index.c
  237. merge-recursive.c
  238. merge-recursive.h
  239. merge-tree.c
  240. mktag.c
  241. name-hash.c
  242. notes.c
  243. notes.h
  244. object.c
  245. object.h
  246. pack-check.c
  247. pack-redundant.c
  248. pack-refs.c
  249. pack-refs.h
  250. pack-revindex.c
  251. pack-revindex.h
  252. pack-write.c
  253. pack.h
  254. pager.c
  255. parse-options.c
  256. parse-options.h
  257. patch-delta.c
  258. patch-id.c
  259. patch-ids.c
  260. patch-ids.h
  261. path.c
  262. pkt-line.c
  263. pkt-line.h
  264. preload-index.c
  265. pretty.c
  266. progress.c
  267. progress.h
  268. quote.c
  269. quote.h
  270. reachable.c
  271. reachable.h
  272. read-cache.c
  273. README
  274. reflog-walk.c
  275. reflog-walk.h
  276. refs.c
  277. refs.h
  278. remote-curl.c
  279. remote.c
  280. remote.h
  281. replace_object.c
  282. rerere.c
  283. rerere.h
  284. revision.c
  285. revision.h
  286. run-command.c
  287. run-command.h
  288. send-pack.h
  289. server-info.c
  290. setup.c
  291. sha1-lookup.c
  292. sha1-lookup.h
  293. sha1_file.c
  294. sha1_name.c
  295. shallow.c
  296. shell.c
  297. shortlog.h
  298. show-index.c
  299. sideband.c
  300. sideband.h
  301. sigchain.c
  302. sigchain.h
  303. strbuf.c
  304. strbuf.h
  305. string-list.c
  306. string-list.h
  307. symlinks.c
  308. tag.c
  309. tag.h
  310. tar.h
  311. test-chmtime.c
  312. test-ctype.c
  313. test-date.c
  314. test-delta.c
  315. test-dump-cache-tree.c
  316. test-genrandom.c
  317. test-match-trees.c
  318. test-parse-options.c
  319. test-path-utils.c
  320. test-sha1.c
  321. test-sha1.sh
  322. test-sigchain.c
  323. thread-utils.c
  324. thread-utils.h
  325. trace.c
  326. transport-helper.c
  327. transport.c
  328. transport.h
  329. tree-diff.c
  330. tree-walk.c
  331. tree-walk.h
  332. tree.c
  333. tree.h
  334. unimplemented.sh
  335. unpack-file.c
  336. unpack-trees.c
  337. unpack-trees.h
  338. upload-pack.c
  339. usage.c
  340. userdiff.c
  341. userdiff.h
  342. utf8.c
  343. utf8.h
  344. var.c
  345. walker.c
  346. walker.h
  347. wrapper.c
  348. write_or_die.c
  349. ws.c
  350. wt-status.c
  351. wt-status.h
  352. xdiff-interface.c
  353. xdiff-interface.h