notes: disallow reusing non-blob as a note object
commitce8daa1eb863c9cdefb06feae2ee7c742ea89847
authorJohan Herland <johan@herland.net>
Wed, 12 Feb 2014 09:54:16 +0000 (12 10:54 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Feb 2014 22:14:33 +0000 (20 14:14 -0800)
tree448c60ed092b4bc7130e11212082831cc82b9898
parent2f93541d88fadd1ff5307d81c2c8921ee3eea058
notes: disallow reusing non-blob as a note object

Currently "git notes add -C $object" will read the raw bytes from $object,
and then copy those bytes into the note object, which is hardcoded to be
of type blob. This means that if the given $object is a non-blob (e.g.
tree or commit), the raw bytes from that object is copied into a blob
object. This is probably not useful, and certainly not what any sane
user would expect. So disallow it, by erroring out if the $object passed
to the -C option is not a blob.

The fix also applies to the -c option (in which the user is prompted to
edit/verify the note contents in a text editor), and also when -c/-C is
passed to "git notes append" (which appends the $object contents to an
existing note object). In both cases, passing a non-blob $object does not
make sense.

Also add a couple of tests demonstrating expected behavior.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/notes.c
t/t3301-notes.sh