All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Emily Shaffer" <emilyshaffer@google.com>,
	"Derrick Stolee" <stolee@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v3 0/5] bundle: show progress on "unbundle"
Date: Thu, 26 Aug 2021 16:05:46 +0200	[thread overview]
Message-ID: <cover-v3-0.5-00000000000-20210826T140414Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-0.4-0000000000-20210727T004015Z-avarab@gmail.com>

This straightforward series addr progress output on "git bundle
unbundle", we already had progress output if bundles were fetched from
via the transport.c (i.e. "git clone/fetch" etc.), but not from "git
bundle unbundle" directly.

This v3 should address all the comments Derrick Stolee had in one way
or another, thanks a lot for the review!

Ævar Arnfjörð Bjarmason (5):
  bundle API: start writing API documentation
  strvec: add a strvec_pushvec()
  bundle API: change "flags" to be "extra_index_pack_args"
  index-pack: add --progress-title option
  bundle: show progress on "unbundle"

 Documentation/git-bundle.txt     |  2 +-
 Documentation/git-index-pack.txt |  6 ++++++
 builtin/bundle.c                 | 15 ++++++++++++++-
 builtin/index-pack.c             |  6 ++++++
 bundle.c                         | 14 ++++++++------
 bundle.h                         | 15 +++++++++++++--
 strvec.c                         |  8 ++++++++
 strvec.h                         |  7 +++++++
 submodule.c                      |  4 +---
 transport.c                      |  6 +++++-
 10 files changed, 69 insertions(+), 14 deletions(-)

Range-diff against v2:
1:  dc8591f6d0b ! 1:  9fb2f7a3a80 bundle API: start writing API documentation
    @@ Commit message
         start. We'll add a parameter to this function in a subsequent commit,
         but let's start by documenting it.
     
    +    The "/**" comment (as opposed to "/*") signifies the start of API
    +    documentation. See [1] and bdfdaa4978d (strbuf.h: integrate
    +    api-strbuf.txt documentation, 2015-01-16) and 6afbbdda333 (strbuf.h:
    +    unify documentation comments beginnings, 2015-01-16) for a discussion
    +    of that convention.
    +
    +    1. https://lore.kernel.org/git/874kbeecfu.fsf@evledraar.gmail.com/
    +
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## bundle.h ##
-:  ----------- > 2:  321b8ba3f0e strvec: add a strvec_pushvec()
2:  3d7bd9c33be ! 3:  637039634e7 bundle API: change "flags" to be "extra_index_pack_args"
    @@ Commit message
         of being able to pass arbitrary arguments to "unbundle" will be used
         in a subsequent commit.
     
    -    We could pass NULL explicitly in cmd_bundle_unbundle(), but let's
    -    instead initialize an empty strvec and pass it, in anticipation of a
    -    subsequent commit wanting to add arguments to it.
    -
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## builtin/bundle.c ##
    -@@ builtin/bundle.c: static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix)
    - 	struct option options[] = {
    - 		OPT_END()
    - 	};
    --	char *bundle_file;
    -+	char* bundle_file;
    -+	struct strvec extra_args = STRVEC_INIT;
    - 
    - 	argc = parse_options_cmd_bundle(argc, argv, prefix,
    - 			builtin_bundle_unbundle_usage, options, &bundle_file);
     @@ builtin/bundle.c: static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix)
      	}
      	if (!startup_info->have_repository)
      		die(_("Need a repository to unbundle."));
     -	ret = !!unbundle(the_repository, &header, bundle_fd, 0) ||
    -+	ret = !!unbundle(the_repository, &header, bundle_fd, &extra_args) ||
    ++	ret = !!unbundle(the_repository, &header, bundle_fd, NULL) ||
      		list_bundle_refs(&header, argc, argv);
      	bundle_header_release(&header);
      cleanup:
    @@ bundle.c: int create_bundle(struct repository *r, const char *path,
     -	const char *argv_index_pack[] = {"index-pack",
     -					 "--fix-thin", "--stdin", NULL, NULL};
      	struct child_process ip = CHILD_PROCESS_INIT;
    -+	int i;
      
     -	if (flags & BUNDLE_VERBOSE)
     -		argv_index_pack[3] = "-v";
    @@ bundle.c: int create_bundle(struct repository *r, const char *path,
     +	strvec_push(&ip.args, "--fix-thin");
     +	strvec_push(&ip.args, "--stdin");
     +	if (extra_index_pack_args) {
    -+		struct strvec *extra = extra_index_pack_args;
    -+		for (i = 0; i < extra->nr; i++)
    -+			strvec_push(&ip.args, extra->v[i]);
    ++		strvec_pushvec(&ip.args, extra_index_pack_args);
     +		strvec_clear(extra_index_pack_args);
     +	}
      
    @@ transport.c: static int fetch_refs_from_bundle(struct transport *transport,
     +	struct strvec extra_index_pack_args = STRVEC_INIT;
      	int ret;
      
    -+	strvec_push(&extra_index_pack_args, "-v");
    ++	if (transport->progress)
    ++		strvec_push(&extra_index_pack_args, "-v");
     +
      	if (!data->get_refs_from_bundle_called)
      		get_refs_from_bundle(transport, 0, NULL);
      	ret = unbundle(the_repository, &data->header, data->fd,
     -			   transport->progress ? BUNDLE_VERBOSE : 0);
    -+		       &extra_index_pack_args);
    ++		       transport->progress ? &extra_index_pack_args : NULL);
      	transport->hash_algo = data->header.hash_algo;
      	return ret;
      }
3:  67197064a8b ! 4:  e44d825e5df index-pack: add --progress-title option
    @@ Commit message
         index-pack: add --progress-title option
     
         Add a --progress-title option to index-pack, when data is piped into
    -    index-pack its progress is a proxy for whatever's feeding it
    -    data.
    +    index-pack its progress is a proxy for whatever's feeding it data.
     
         This option will allow us to set a more relevant progress bar title in
         "git bundle unbundle", and is also used in my "bundle-uri" RFC
         patches[1] by a new caller in fetch-pack.c.
     
    +    The code change in cmd_index_pack() won't handle
    +    "--progress-title=xyz", only "--progress-title xyz", and the "(i+1)"
    +    style (as opposed to "i + 1") is a bit odd.
    +
    +    Not using the "--long-option=value" style is inconsistent with
    +    existing long options handled by cmd_index_pack(), but makes the code
    +    that needs to call it better (two strvec_push(), instead of needing a
    +    strvec_pushf()).
    +
    +    Since the option is internal-only the inconsistency shouldn't
    +    matter. I'm copying the pattern to handle it as-is from the handling
    +    of the existing "-o" option in the same function, see 9cf6d3357aa (Add
    +    git-index-pack utility, 2005-10-12) for its addition.
    +
    +    Eventually we'd like to migrate all of this this to parse_options(),
    +    which would make these differences in behavior go away.
    +
         1. https://lore.kernel.org/git/RFC-cover-00.13-0000000000-20210805T150534Z-avarab@gmail.com/
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    @@ Documentation/git-index-pack.txt: OPTIONS
     +--progress-title::
     +	For internal use only.
     ++
    -+Set the title of the "Receiving objects" progress bar (it's "Indexing
    -+objects" under `--stdin`).
    ++Set the title of the progress bar. The title is "Receiving objects" by
    ++default and "Indexing objects" when `--stdin` is specified.
     +
      --check-self-contained-and-connected::
      	Die if the pack contains broken links. For internal use only.
4:  e4ca8b26962 < -:  ----------- bundle: show progress on "unbundle"
-:  ----------- > 5:  cd38b0f0fed bundle: show progress on "unbundle"
-- 
2.33.0.733.ga72a4f1c2e1


  parent reply	other threads:[~2021-08-26 14:05 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-27  0:41 [PATCH 0/4] bundle: show progress on "unbundle" Ævar Arnfjörð Bjarmason
2021-07-27  0:41 ` [PATCH 1/4] bundle API: start writing API documentation Ævar Arnfjörð Bjarmason
2021-07-27  0:41 ` [PATCH 2/4] bundle API: change "flags" to be "extra_index_pack_args" Ævar Arnfjörð Bjarmason
2021-07-27  0:41 ` [PATCH 3/4] index-pack: add --progress-title option Ævar Arnfjörð Bjarmason
2021-07-27  0:41 ` [PATCH 4/4] bundle: show progress on "unbundle" Ævar Arnfjörð Bjarmason
2021-08-23 11:02 ` [PATCH v2 0/4] " Ævar Arnfjörð Bjarmason
2021-08-23 11:02   ` [PATCH v2 1/4] bundle API: start writing API documentation Ævar Arnfjörð Bjarmason
2021-08-24 17:01     ` Derrick Stolee
2021-08-24 21:48       ` Ævar Arnfjörð Bjarmason
2021-08-23 11:02   ` [PATCH v2 2/4] bundle API: change "flags" to be "extra_index_pack_args" Ævar Arnfjörð Bjarmason
2021-08-24 17:09     ` Derrick Stolee
2021-08-24 21:41       ` Ævar Arnfjörð Bjarmason
2021-08-24 21:48         ` Derrick Stolee
2021-08-23 11:02   ` [PATCH v2 3/4] index-pack: add --progress-title option Ævar Arnfjörð Bjarmason
2021-08-24 17:18     ` Derrick Stolee
2021-08-24 21:40       ` Ævar Arnfjörð Bjarmason
2021-08-23 11:02   ` [PATCH v2 4/4] bundle: show progress on "unbundle" Ævar Arnfjörð Bjarmason
2021-08-24 17:23     ` Derrick Stolee
2021-08-24 21:39       ` Ævar Arnfjörð Bjarmason
2021-08-26 14:05 ` Ævar Arnfjörð Bjarmason [this message]
2021-08-26 14:05   ` [PATCH v3 1/5] bundle API: start writing API documentation Ævar Arnfjörð Bjarmason
2021-08-26 14:05   ` [PATCH v3 2/5] strvec: add a strvec_pushvec() Ævar Arnfjörð Bjarmason
2021-08-28  1:23     ` Junio C Hamano
2021-08-28  1:29       ` Junio C Hamano
2021-08-28  4:12         ` Jeff King
2021-08-29 23:54           ` Junio C Hamano
2021-08-30 17:30             ` Derrick Stolee
2021-09-02 23:19           ` Ævar Arnfjörð Bjarmason
2021-09-03  5:05             ` Junio C Hamano
2021-09-03 11:06             ` Jeff King
2021-08-26 14:05   ` [PATCH v3 3/5] bundle API: change "flags" to be "extra_index_pack_args" Ævar Arnfjörð Bjarmason
2021-08-28  1:44     ` Junio C Hamano
2021-08-26 14:05   ` [PATCH v3 4/5] index-pack: add --progress-title option Ævar Arnfjörð Bjarmason
2021-08-28  1:50     ` Junio C Hamano
2021-08-26 14:05   ` [PATCH v3 5/5] bundle: show progress on "unbundle" Ævar Arnfjörð Bjarmason
2021-08-28  1:54     ` Junio C Hamano
2021-09-02 22:47       ` Ævar Arnfjörð Bjarmason
2021-09-05  7:34   ` [PATCH v4 0/4] " Ævar Arnfjörð Bjarmason
2021-09-05  7:34     ` [PATCH v4 1/4] bundle API: start writing API documentation Ævar Arnfjörð Bjarmason
2021-09-05  7:34     ` [PATCH v4 2/4] bundle API: change "flags" to be "extra_index_pack_args" Ævar Arnfjörð Bjarmason
2021-09-05  7:34     ` [PATCH v4 3/4] index-pack: add --progress-title option Ævar Arnfjörð Bjarmason
2021-09-05  7:34     ` [PATCH v4 4/4] bundle: show progress on "unbundle" Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover-v3-0.5-00000000000-20210826T140414Z-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=stolee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.