Merge branch 'jh/note-trees-record-blobs'
"git notes -C <blob>" should not take an object that is not a blob. * jh/note-trees-record-blobs: notes: disallow reusing non-blob as a note object
This commit is contained in:
commit
b37f81b7b6
@ -269,7 +269,11 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
|
|||||||
die(_("Failed to resolve '%s' as a valid ref."), arg);
|
die(_("Failed to resolve '%s' as a valid ref."), arg);
|
||||||
if (!(buf = read_sha1_file(object, &type, &len)) || !len) {
|
if (!(buf = read_sha1_file(object, &type, &len)) || !len) {
|
||||||
free(buf);
|
free(buf);
|
||||||
die(_("Failed to read object '%s'."), arg);;
|
die(_("Failed to read object '%s'."), arg);
|
||||||
|
}
|
||||||
|
if (type != OBJ_BLOB) {
|
||||||
|
free(buf);
|
||||||
|
die(_("Cannot read note data from non-blob object '%s'."), arg);
|
||||||
}
|
}
|
||||||
strbuf_add(&(msg->buf), buf, len);
|
strbuf_add(&(msg->buf), buf, len);
|
||||||
free(buf);
|
free(buf);
|
||||||
|
@ -812,6 +812,33 @@ test_expect_success 'create note from non-existing note with "git notes add -C"
|
|||||||
test_must_fail git notes list HEAD
|
test_must_fail git notes list HEAD
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'create note from non-blob with "git notes add -C" fails' '
|
||||||
|
commit=$(git rev-parse --verify HEAD) &&
|
||||||
|
tree=$(git rev-parse --verify HEAD:) &&
|
||||||
|
test_must_fail git notes add -C $commit &&
|
||||||
|
test_must_fail git notes add -C $tree &&
|
||||||
|
test_must_fail git notes list HEAD
|
||||||
|
'
|
||||||
|
|
||||||
|
cat > expect << EOF
|
||||||
|
commit 80d796defacd5db327b7a4e50099663902fbdc5c
|
||||||
|
Author: A U Thor <author@example.com>
|
||||||
|
Date: Thu Apr 7 15:20:13 2005 -0700
|
||||||
|
|
||||||
|
8th
|
||||||
|
|
||||||
|
Notes (other):
|
||||||
|
This is a blob object
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'create note from blob with "git notes add -C" reuses blob id' '
|
||||||
|
blob=$(echo "This is a blob object" | git hash-object -w --stdin) &&
|
||||||
|
git notes add -C $blob &&
|
||||||
|
git log -1 > actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
test "$(git notes list HEAD)" = "$blob"
|
||||||
|
'
|
||||||
|
|
||||||
cat > expect << EOF
|
cat > expect << EOF
|
||||||
commit 016e982bad97eacdbda0fcbd7ce5b0ba87c81f1b
|
commit 016e982bad97eacdbda0fcbd7ce5b0ba87c81f1b
|
||||||
Author: A U Thor <author@example.com>
|
Author: A U Thor <author@example.com>
|
||||||
|
Loading…
Reference in New Issue
Block a user