mirror of
https://github.com/git/git.git
synced 2026-08-08 00:52:31 +00:00
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 the other commands use. Update documentation to remove %(objecttype) from the caveats of remote-object-info and show %(objecttype) support. Now that type is supported and the default format unified, update the tests to expect the new default format. 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>
This commit is contained in:
committed by
Junio C Hamano
parent
1a1698d8c6
commit
641e7e8c61
@@ -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. Currently only object size
|
||||
and type are 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,18 @@ 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)]]
|
||||
|
||||
The values in `obj-info` appear in the same order as the corresponding `attr`
|
||||
lines, with exactly one value per requested attribute.
|
||||
|
||||
If the server does not recognize the OID, the response will be `<oid> SP`
|
||||
regardless of the number of attributes requested.
|
||||
|
||||
@@ -823,15 +823,9 @@ static void parse_cmd_remote_object_info(struct batch_options *opt,
|
||||
char *line_to_split;
|
||||
struct fetch_object_info_results results = FETCH_OBJECT_INFO_RESULTS_INIT;
|
||||
struct oid_array object_info_oids = OID_ARRAY_INIT;
|
||||
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);
|
||||
@@ -883,7 +877,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;
|
||||
|
||||
free_fetch_object_info_results(&results);
|
||||
free(line_to_split);
|
||||
|
||||
@@ -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,7 +152,7 @@ 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' '
|
||||
test_expect_success 'remote-object-info and info can be mixed using the unified default format' '
|
||||
(
|
||||
set_transport_variables "$daemon_parent" &&
|
||||
cd "$daemon_parent/daemon_client_empty" &&
|
||||
@@ -162,7 +162,7 @@ test_expect_success 'remote-object-info does not change the default format of in
|
||||
local_size=$(strlen "$local_content") &&
|
||||
|
||||
echo "$local_oid blob $local_size" >expect &&
|
||||
echo "$hello_oid $hello_size" >>expect &&
|
||||
echo "$hello_oid blob $hello_size" >>expect &&
|
||||
echo "$local_oid blob $local_size" >>expect &&
|
||||
|
||||
git cat-file --batch-command >actual <<-EOF &&
|
||||
@@ -209,10 +209,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 &&
|
||||
@@ -448,10 +448,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
|
||||
@@ -467,10 +467,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 &&
|
||||
@@ -618,10 +618,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
|
||||
@@ -636,10 +636,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
|
||||
|
||||
Reference in New Issue
Block a user