mbox series

[0/6] cat-file: add remote-object-info to batch-command

Message ID 20240628190503.67389-1-eric.peijian@gmail.com (mailing list archive)
Headers show
Series cat-file: add remote-object-info to batch-command | expand

Message

Eric Ju June 28, 2024, 7:04 p.m. UTC
This is a continuation of Calvin Wan's (calvinwan@google.com)
patch series [PATCH v5 0/6] cat-file: add --batch-command remote-object-info command at [1].

Sometimes it is useful to get information about an object without having to download
it completely. The server logic for retrieving size has already been implemented and merged in
"a2ba162cda (object-info: support for retrieving object info, 2021-04-20)"[2].
This patch series implement the client option for it.

This patch series add the `remote-object-info` command to `cat-file --batch-command`. This command
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 have
object-info capability, the entire object is fetched and the
relevant object info is returned.

A few questions open for discussions please:

1. In the current implementation, if a user puts `remote-object-info` in protocol v1,
   `cat-file --batch-command` will die. Which way do we prefer? "error and exit (i.e. die)"
   or "warn and wait for new command".

2. Right now, only the size is supported. If the batch command format
   contains objectsize:disk or deltabase, it will die. The question
   is about objecttype. In the current implementation, it will die too.
   But dying on objecttype breaks the default format. We have changed the
   default format to %(objectname) %(objectsize) when remote-object-info is used.
   Any suggestions on this approach?


[1] https://lore.kernel.org/git/20220728230210.2952731-1-calvinwan@google.com/#t
[2] https://git.kernel.org/pub/scm/git/git.git/commit/?id=a2ba162cda2acc171c3e36acbbc854792b093cb7


Calvin Wan (5):
  fetch-pack: refactor packet writing
  fetch-pack: move fetch initialization
  serve: advertise object-info feature
  transport: add client support for object-info
  cat-file: add remote-object-info to batch-command

Eric Ju (1):
  cat-file: add declaration of variable i inside its for loop

 Documentation/git-cat-file.txt         |  22 +-
 builtin/cat-file.c                     | 240 ++++++++++----
 fetch-pack.c                           |  48 ++-
 fetch-pack.h                           |  10 +
 object-file.c                          |  11 +
 object-store-ll.h                      |   3 +
 serve.c                                |   4 +-
 t/t1017-cat-file-remote-object-info.sh | 412 +++++++++++++++++++++++++
 transport-helper.c                     |   8 +-
 transport.c                            | 102 +++++-
 transport.h                            |  11 +
 11 files changed, 785 insertions(+), 86 deletions(-)
 create mode 100755 t/t1017-cat-file-remote-object-info.sh

Comments

Eric Ju Aug. 22, 2024, 9:24 p.m. UTC | #1
Dear Reviewers,

Thank you for your thorough review of v1. I have addressed all the
issues identified in that version and have now prepared v2.

Could you please take another look and provide your acknowledgment?

Thank you very much for your time and effort.

Best regards,
Peijian

On Fri, Jun 28, 2024 at 3:05 PM Eric Ju <eric.peijian@gmail.com> wrote:
>
> This is a continuation of Calvin Wan's (calvinwan@google.com)
> patch series [PATCH v5 0/6] cat-file: add --batch-command remote-object-info command at [1].
>
> Sometimes it is useful to get information about an object without having to download
> it completely. The server logic for retrieving size has already been implemented and merged in
> "a2ba162cda (object-info: support for retrieving object info, 2021-04-20)"[2].
> This patch series implement the client option for it.
>
> This patch series add the `remote-object-info` command to `cat-file --batch-command`. This command
> 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 have
> object-info capability, the entire object is fetched and the
> relevant object info is returned.
>
> A few questions open for discussions please:
>
> 1. In the current implementation, if a user puts `remote-object-info` in protocol v1,
>    `cat-file --batch-command` will die. Which way do we prefer? "error and exit (i.e. die)"
>    or "warn and wait for new command".
>
> 2. Right now, only the size is supported. If the batch command format
>    contains objectsize:disk or deltabase, it will die. The question
>    is about objecttype. In the current implementation, it will die too.
>    But dying on objecttype breaks the default format. We have changed the
>    default format to %(objectname) %(objectsize) when remote-object-info is used.
>    Any suggestions on this approach?
>
>
> [1] https://lore.kernel.org/git/20220728230210.2952731-1-calvinwan@google.com/#t
> [2] https://git.kernel.org/pub/scm/git/git.git/commit/?id=a2ba162cda2acc171c3e36acbbc854792b093cb7
>
>
> Calvin Wan (5):
>   fetch-pack: refactor packet writing
>   fetch-pack: move fetch initialization
>   serve: advertise object-info feature
>   transport: add client support for object-info
>   cat-file: add remote-object-info to batch-command
>
> Eric Ju (1):
>   cat-file: add declaration of variable i inside its for loop
>
>  Documentation/git-cat-file.txt         |  22 +-
>  builtin/cat-file.c                     | 240 ++++++++++----
>  fetch-pack.c                           |  48 ++-
>  fetch-pack.h                           |  10 +
>  object-file.c                          |  11 +
>  object-store-ll.h                      |   3 +
>  serve.c                                |   4 +-
>  t/t1017-cat-file-remote-object-info.sh | 412 +++++++++++++++++++++++++
>  transport-helper.c                     |   8 +-
>  transport.c                            | 102 +++++-
>  transport.h                            |  11 +
>  11 files changed, 785 insertions(+), 86 deletions(-)
>  create mode 100755 t/t1017-cat-file-remote-object-info.sh
>
> --
> 2.45.2
>