Our toolset may have become too tight without leaving enough escape hatch to hinder further development. "hash-object" makes minimum sanity checks by default for a very good reason, but it means that we cannot deliberately create broken datastreams to test against fsck and other codepaths that are supposed to detect and report such broken data that we may encounter in the field, perhaps created by third-party tools. These changes teach a new "--literally" option to "hash-object" to allow us throw any garbage to create a broken loose object. You can even do something horrible like git hash-object -t bogus --literally -w --stdin </dev/null by any garbage typename if you wanted to. It probably needs to be accompanied by "cat-file --literally" that does not take "-t <type>" option or does not complain even if the contents look unreasonable. But that is for another day (hint, hint). The second patch is optional. I thought I may want to pass this as a new HASH_LITERALLY bit down the callchain to index_fd(), but I decided against it, as that will allow other codepaths to create broken datastream, spreading this debugging aid a bit too widely for my taste. Junio C Hamano (3): hash-object: reduce file-scope statics hash-object: pass 'write_object' as a flag hash-object: add --literally option builtin/hash-object.c | 103 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 42 deletions(-) -- 2.1.0-459-g1bc3b2b -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html