[PATCH] git-cat-file: '-s' to find out object size.
We use sha1_object_info() now, and getting size is also trivial. I admit that this is more of "because we can" not "because I see immediate need for it", though. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
f2a06330f0
commit
62bb99606d
@ -9,12 +9,13 @@ git-cat-file - Provide content or type information for repository objects
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-cat-file' (-t | <type>) <object>
|
||||
'git-cat-file' (-t | -s | <type>) <object>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Provides content or type of objects in the repository. The type
|
||||
is required if '-t' is not being used to find the object type.
|
||||
is required unless '-t' is used to find the object type,
|
||||
or '-s' is used to find the object size.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -25,6 +26,10 @@ OPTIONS
|
||||
Instead of the content, show the object type identified by
|
||||
<object>.
|
||||
|
||||
-s::
|
||||
Instead of the content, show the object size identified by
|
||||
<object>.
|
||||
|
||||
<type>::
|
||||
Typically this matches the real type of <object> but asking
|
||||
for a type that can trivially dereferenced from the given
|
||||
@ -35,7 +40,8 @@ OPTIONS
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
If '-t' is specified, one of the <type>.
|
||||
If '-t' is specified, one of the <type>. If '-s' is specified,
|
||||
the size of the <object> in bytes.
|
||||
|
||||
Otherwise the raw (though uncompressed) contents of the <object> will
|
||||
be returned.
|
||||
|
13
cat-file.c
13
cat-file.c
@ -13,11 +13,18 @@ int main(int argc, char **argv)
|
||||
unsigned long size;
|
||||
|
||||
if (argc != 3 || get_sha1(argv[2], sha1))
|
||||
usage("git-cat-file [-t | tagname] <sha1>");
|
||||
usage("git-cat-file [-t | -s | tagname] <sha1>");
|
||||
|
||||
if (!strcmp("-t", argv[1])) {
|
||||
if (!strcmp("-t", argv[1]) || !strcmp("-s", argv[1])) {
|
||||
if (!sha1_object_info(sha1, type, &size)) {
|
||||
printf("%s\n", type);
|
||||
switch (argv[1][1]) {
|
||||
case 't':
|
||||
printf("%s\n", type);
|
||||
break;
|
||||
case 's':
|
||||
printf("%lu\n", size);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
buf = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user