fsck.c: fix bogus "empty tree" check

ba002f3 (builtin-fsck: move common object checking code to fsck.c) did
more than what it claimed to.  Most notably, it wrongly made an empty tree
object an error by pretending to only move code from fsck_tree() in
builtin-fsck.c to fsck_tree() in fsck.c, but in fact adding a bogus check
to barf on an empty tree.

An empty tree object is _unusual_.  Recent porcelains try reasonably hard
not to let the user create a commit that contains such a tree.  Perhaps
warning about them in git-fsck may have some merit.

HOWEVER.

Being unusual and being errorneous are two quite different things.  This
is especially true now we seem to use the same fsck_$object() code in
places other than git-fsck itself.  For example, receive-pack should not
reject unusual objects, even if it would be a good idea to tighten it to
reject incorrect ones.

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