cat-file: unify default format
%(objecttype) is supported both by the client and by the server. Change the temporary default format to the unified version that other commands use. Update documentation to remove %(objecttype) from the caveats of remote-object-info. Update tests that used the default format to expect type. Update documentation to show %(objecttype) support. Mentored-by: Karthik Nayak <karthik.188@gmail.com> Mentored-by: Chandra Pratap <chandrapratap3519@gmail.com> Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>seen
parent
a07e2cfbdd
commit
b14534d8bc
|
|
@ -348,15 +348,12 @@ newline. The available atoms are:
|
|||
after that first run of whitespace (i.e., the "rest" of the
|
||||
line) are output in place of the `%(rest)` atom.
|
||||
|
||||
The command `remote-object-info` only supports the `%(objectname)` and
|
||||
`%(objectsize)` placeholders. See `CAVEATS` below for more information.
|
||||
The command `remote-object-info` only supports the `%(objectname)`,
|
||||
`%(objectsize)` and `%(objecttype)` placeholders. See `CAVEATS` below for more
|
||||
information.
|
||||
|
||||
If no format is specified, the default format is `%(objectname)
|
||||
%(objecttype) %(objectsize)`, except for `remote-object-info` commands which
|
||||
use `%(objectname) %(objectsize)` because `%(objecttype)` is not supported yet.
|
||||
|
||||
WARNING: When "%(objecttype)" is supported, the default format WILL be unified,
|
||||
so DO NOT RELY on the current default format to stay the same!!!
|
||||
%(objecttype) %(objectsize)`.
|
||||
|
||||
If `--batch` is specified, or if `--batch-command` is used with the `contents`
|
||||
command, the object information is followed by the object contents (consisting
|
||||
|
|
@ -453,9 +450,9 @@ scripting purposes.
|
|||
CAVEATS
|
||||
-------
|
||||
|
||||
Note that only `%(objectname)` and `%(objectsize)` are currently
|
||||
supported by the `remote-object-info` command. Using any other placeholder in
|
||||
the format string will return an empty string in its position.
|
||||
Note that only `%(objectname)`, `%(objectsize)` and `%(objecttype)` are
|
||||
currently supported by the `remote-object-info` command. Using any other
|
||||
placeholder in the format string will return an empty string in its position.
|
||||
|
||||
Note that the sizes of objects on disk are reported accurately, but care
|
||||
should be taken in drawing conclusions about which refs or objects are
|
||||
|
|
|
|||
|
|
@ -558,14 +558,17 @@ object-info
|
|||
|
||||
`object-info` is the command to retrieve information about one or more objects.
|
||||
Its main purpose is to allow a client to make decisions based on this
|
||||
information without having to fully fetch objects. Object size is the only
|
||||
information that is currently supported.
|
||||
information without having to fully fetch objects. Object size and type are the
|
||||
only information that is currently supported.
|
||||
|
||||
An `object-info` request takes the following arguments:
|
||||
|
||||
size
|
||||
Requests size information to be returned for each listed object id.
|
||||
|
||||
type
|
||||
Requests type information to be returned for each listed object id.
|
||||
|
||||
oid <oid>
|
||||
Indicates to the server an object which the client wants to obtain
|
||||
information for. They must be full OIDs.
|
||||
|
|
@ -580,11 +583,15 @@ space.
|
|||
info = *PKT-LINE(attr LF)
|
||||
*PKT-LINE(obj-info LF)
|
||||
|
||||
attr = "size"
|
||||
attr = "size" | "type"
|
||||
|
||||
obj-size = 1*DIGIT
|
||||
|
||||
obj-info = obj-id [SP [obj-size]]
|
||||
obj-type = "blob" | "tree" | "commit" | "tag"
|
||||
|
||||
obj-val = obj-size | obj-type
|
||||
|
||||
obj-info = obj-id [SP [obj-val *(SP obj-val)]]
|
||||
|
||||
If the server does not recognize the OID, the response will be `<oid> SP`
|
||||
regardless of the number of attributes requested.
|
||||
|
|
|
|||
|
|
@ -841,15 +841,9 @@ static void parse_cmd_remote_object_info(struct batch_options *opt,
|
|||
struct object_info *remote_object_info = NULL;
|
||||
struct oid_array object_info_oids = OID_ARRAY_INIT;
|
||||
struct string_list object_info_options = STRING_LIST_INIT_NODUP;
|
||||
const char *saved_format = opt->format;
|
||||
|
||||
if (strlen(line) >= MAX_REMOTE_OBJ_INFO_LINE)
|
||||
die(_("remote-object-info command too long"));
|
||||
/*
|
||||
* TODO: Use the default format once %(objecttype) is supported.
|
||||
*/
|
||||
if (!opt->format)
|
||||
opt->format = "%(objectname) %(objectsize)";
|
||||
|
||||
line_to_split = xstrdup(line);
|
||||
count = split_cmdline(line_to_split, &argv);
|
||||
|
|
@ -904,7 +898,6 @@ static void parse_cmd_remote_object_info(struct batch_options *opt,
|
|||
data->is_remote = 0;
|
||||
}
|
||||
data->skip_object_info = 0;
|
||||
opt->format = saved_format;
|
||||
|
||||
for (size_t i = 0; i < object_info_oids.nr; i++)
|
||||
free_object_info_contents(&remote_object_info[i]);
|
||||
|
|
|
|||
|
|
@ -139,10 +139,10 @@ test_expect_success 'batch-command remote-object-info git:// default filter' '
|
|||
set_transport_variables "$daemon_parent" &&
|
||||
cd "$daemon_parent/daemon_client_empty" &&
|
||||
|
||||
echo "$hello_oid $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_size" >>expect &&
|
||||
echo "$hello_oid $hello_type $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
git cat-file --batch-command >actual <<-EOF &&
|
||||
remote-object-info "$GIT_DAEMON_URL/parent" $hello_oid $tree_oid
|
||||
|
|
@ -152,28 +152,6 @@ test_expect_success 'batch-command remote-object-info git:// default filter' '
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success 'remote-object-info does not change the default format of info' '
|
||||
(
|
||||
set_transport_variables "$daemon_parent" &&
|
||||
cd "$daemon_parent/daemon_client_empty" &&
|
||||
|
||||
local_content="local object" &&
|
||||
local_oid=$(echo_without_newline "$local_content" | git hash-object -w --stdin) &&
|
||||
local_size=$(strlen "$local_content") &&
|
||||
|
||||
echo "$local_oid blob $local_size" >expect &&
|
||||
echo "$hello_oid $hello_size" >>expect &&
|
||||
echo "$local_oid blob $local_size" >>expect &&
|
||||
|
||||
git cat-file --batch-command >actual <<-EOF &&
|
||||
info $local_oid
|
||||
remote-object-info "$GIT_DAEMON_URL/parent" $hello_oid
|
||||
info $local_oid
|
||||
EOF
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command --buffer remote-object-info git://' '
|
||||
(
|
||||
set_transport_variables "$daemon_parent" &&
|
||||
|
|
@ -209,10 +187,10 @@ test_expect_success 'batch-command -Z remote-object-info git:// default filter'
|
|||
set_transport_variables "$daemon_parent" &&
|
||||
cd "$daemon_parent/daemon_client_empty" &&
|
||||
|
||||
printf "%s\0" "$hello_oid $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_size" >>expect &&
|
||||
printf "%s\0" "$hello_oid $hello_type $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
printf "%s\0" "$hello_oid missing" >>expect &&
|
||||
printf "%s\0" "$tree_oid missing" >>expect &&
|
||||
|
|
@ -432,10 +410,10 @@ test_expect_success 'batch-command remote-object-info file:// default filter' '
|
|||
server_path="$(pwd)/server" &&
|
||||
cd file_client_empty &&
|
||||
|
||||
echo "$hello_oid $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_size" >>expect &&
|
||||
echo "$hello_oid $hello_type $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
git cat-file --batch-command >actual <<-EOF &&
|
||||
remote-object-info "file://${server_path}" $hello_oid $tree_oid
|
||||
|
|
@ -451,10 +429,10 @@ test_expect_success 'batch-command -Z remote-object-info file:// default filter'
|
|||
server_path="$(pwd)/server" &&
|
||||
cd file_client_empty &&
|
||||
|
||||
printf "%s\0" "$hello_oid $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_size" >>expect &&
|
||||
printf "%s\0" "$hello_oid $hello_type $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
printf "%s\0" "$hello_oid missing" >>expect &&
|
||||
printf "%s\0" "$tree_oid missing" >>expect &&
|
||||
|
|
@ -602,10 +580,10 @@ test_expect_success 'batch-command remote-object-info http:// default filter' '
|
|||
set_transport_variables "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
|
||||
cd "$HTTPD_DOCUMENT_ROOT_PATH/http_client_empty" &&
|
||||
|
||||
echo "$hello_oid $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_size" >>expect &&
|
||||
echo "$hello_oid $hello_type $hello_size" >expect &&
|
||||
echo "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
echo "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
echo "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
git cat-file --batch-command >actual <<-EOF &&
|
||||
remote-object-info "$HTTPD_URL/smart/http_parent" $hello_oid $tree_oid
|
||||
|
|
@ -620,10 +598,10 @@ test_expect_success 'batch-command -Z remote-object-info http:// default filter'
|
|||
set_transport_variables "$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
|
||||
cd "$HTTPD_DOCUMENT_ROOT_PATH/http_client_empty" &&
|
||||
|
||||
printf "%s\0" "$hello_oid $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_size" >>expect &&
|
||||
printf "%s\0" "$hello_oid $hello_type $hello_size" >expect &&
|
||||
printf "%s\0" "$tree_oid $tree_type $tree_size" >>expect &&
|
||||
printf "%s\0" "$commit_oid $commit_type $commit_size" >>expect &&
|
||||
printf "%s\0" "$tag_oid $tag_type $tag_size" >>expect &&
|
||||
|
||||
batch_input="remote-object-info $HTTPD_URL/smart/http_parent $hello_oid $tree_oid
|
||||
remote-object-info $HTTPD_URL/smart/http_parent $commit_oid $tag_oid
|
||||
|
|
|
|||
Loading…
Reference in New Issue