object-info: support for retrieving object info

Sometimes it is useful to get information of an object without having to
download it completely.

Add the "object-info" capability that lets the client ask for
object-related information with their full hexadecimal object names.

Only sizes are returned for now.

Signed-off-by: Bruno Albuquerque <bga@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Bruno Albuquerque
2021-04-20 16:38:31 -07:00
committed by Junio C Hamano
parent d1b10fc6d8
commit a2ba162cda
6 changed files with 183 additions and 0 deletions

View File

@ -19,6 +19,7 @@ test_expect_success 'test capability advertisement' '
fetch=shallow
server-option
object-format=$(test_oid algo)
object-info
0000
EOF
@ -240,4 +241,29 @@ test_expect_success 'unexpected lines are not allowed in fetch request' '
grep "unexpected line: .this-is-not-a-command." err
'
# Test the basics of object-info
#
test_expect_success 'basics of object-info' '
test-tool pkt-line pack >in <<-EOF &&
command=object-info
object-format=$(test_oid algo)
0001
size
oid $(git rev-parse two:two.t)
oid $(git rev-parse two:two.t)
0000
EOF
cat >expect <<-EOF &&
size
$(git rev-parse two:two.t) $(wc -c <two.t | xargs)
$(git rev-parse two:two.t) $(wc -c <two.t | xargs)
0000
EOF
test-tool serve-v2 --stateless-rpc <in >out &&
test-tool pkt-line unpack <out >actual &&
test_cmp expect actual
'
test_done