Message ID | 20220328191112.3092139-1-calvinwan@google.com (mailing list archive) |
---|---|
Headers | show |
Series | object-info: add option for retrieving object info | expand |
Calvin Wan <calvinwan@google.com> writes: > Sometimes it is useful to get information about an object without > having to download it completely. The server logic has already been > implemented as “a2ba162cda (object-info: support for retrieving object > info, 2021-04-20)”. This patch implements the client option for it. > > Add ‘--object-info’ option to fetch. This option allows the client to > make an object-info command request to a server that supports protocol > v2. If the server is v2, but does not allow for the object-info > command request, the entire object is fetched instead and the relevant > information is returned. > > Patch 1 is a small refactor. Patch 2 adds a config option for > advertisement of object-info. Patch 3 is the main implementation of > fetch object-info. > > Major changes since v2: > * Added a fallback for servers that do not > allow object-info > * Refactored the fetch object-info code by moving it to fetch_refs in > the vtable rather than having its own function in the vtable. This > allows for the code to easily transition to the fallback if > object-info fails. > > Calvin Wan (3): > fetch-pack: refactor how packet is written to be more generic > objectinfo.advertise: add config option to advertise object-info > object-info: add option for retrieving object info > > Documentation/config/transfer.txt | 4 + > Documentation/fetch-options.txt | 5 ++ > Documentation/git-fetch.txt | 1 + > builtin/fetch.c | 36 +++++++- > fetch-pack.c | 66 ++++++++++---- > fetch-pack.h | 9 ++ > protocol-caps.c | 11 +++ > protocol-caps.h | 6 ++ > serve.c | 2 +- > t/t5583-fetch-object-info.sh | 138 ++++++++++++++++++++++++++++++ > transport-helper.c | 8 +- > transport-internal.h | 1 + > transport.c | 75 +++++++++++++++- > transport.h | 9 ++ > 14 files changed, 349 insertions(+), 22 deletions(-) > create mode 100755 t/t5583-fetch-object-info.sh > > > base-commit: f01e51a7cfd75131b7266131b1f7540ce0a8e5c1 I am getting the following failures when they are queued on this base, or on a more recent tip of 'master/main'. Test Summary Report ------------------- t5555-http-smart-common.sh (Wstat: 256 Tests: 10 Failed: 1) Failed test: 9 Non-zero exit status: 1 t5583-fetch-object-info.sh (Wstat: 256 Tests: 11 Failed: 1) Failed test: 5 Non-zero exit status: 1 t5701-git-serve.sh (Wstat: 256 Tests: 20 Failed: 2) Failed tests: 1, 20 Non-zero exit status: 1
I seem to have introduced a small bug with the advertisement while I was making my final changes. Will re-roll later today On Tue, Mar 29, 2022 at 1:35 PM Junio C Hamano <gitster@pobox.com> wrote: > > Calvin Wan <calvinwan@google.com> writes: > > > Sometimes it is useful to get information about an object without > > having to download it completely. The server logic has already been > > implemented as “a2ba162cda (object-info: support for retrieving object > > info, 2021-04-20)”. This patch implements the client option for it. > > > > Add ‘--object-info’ option to fetch. This option allows the client to > > make an object-info command request to a server that supports protocol > > v2. If the server is v2, but does not allow for the object-info > > command request, the entire object is fetched instead and the relevant > > information is returned. > > > > Patch 1 is a small refactor. Patch 2 adds a config option for > > advertisement of object-info. Patch 3 is the main implementation of > > fetch object-info. > > > > Major changes since v2: > > * Added a fallback for servers that do not > > allow object-info > > * Refactored the fetch object-info code by moving it to fetch_refs in > > the vtable rather than having its own function in the vtable. This > > allows for the code to easily transition to the fallback if > > object-info fails. > > > > Calvin Wan (3): > > fetch-pack: refactor how packet is written to be more generic > > objectinfo.advertise: add config option to advertise object-info > > object-info: add option for retrieving object info > > > > Documentation/config/transfer.txt | 4 + > > Documentation/fetch-options.txt | 5 ++ > > Documentation/git-fetch.txt | 1 + > > builtin/fetch.c | 36 +++++++- > > fetch-pack.c | 66 ++++++++++---- > > fetch-pack.h | 9 ++ > > protocol-caps.c | 11 +++ > > protocol-caps.h | 6 ++ > > serve.c | 2 +- > > t/t5583-fetch-object-info.sh | 138 ++++++++++++++++++++++++++++++ > > transport-helper.c | 8 +- > > transport-internal.h | 1 + > > transport.c | 75 +++++++++++++++- > > transport.h | 9 ++ > > 14 files changed, 349 insertions(+), 22 deletions(-) > > create mode 100755 t/t5583-fetch-object-info.sh > > > > > > base-commit: f01e51a7cfd75131b7266131b1f7540ce0a8e5c1 > > I am getting the following failures when they are queued on this > base, or on a more recent tip of 'master/main'. > > Test Summary Report > ------------------- > t5555-http-smart-common.sh (Wstat: 256 Tests: 10 Failed: 1) > Failed test: 9 > Non-zero exit status: 1 > t5583-fetch-object-info.sh (Wstat: 256 Tests: 11 Failed: 1) > Failed test: 5 > Non-zero exit status: 1 > t5701-git-serve.sh (Wstat: 256 Tests: 20 Failed: 2) > Failed tests: 1, 20 > Non-zero exit status: 1
Calvin Wan <calvinwan@google.com> writes: > Sometimes it is useful to get information about an object without > having to download it completely. The server logic has already been > implemented as “a2ba162cda (object-info: support for retrieving object > info, 2021-04-20)”. This patch implements the client option for it. Merged to 'seen', this seems to break a test in t5583. e.g. https://github.com/git/git/runs/5763421702?check_suite_focus=true Thanks.