All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 08/15] scalar: implement the `clone` subcommand
Date: Wed, 01 Sep 2021 09:45:45 -0700	[thread overview]
Message-ID: <xmqqsfyoqm6e.fsf@gitster.g> (raw)
In-Reply-To: <2cbf0b611133df5fa7eed1bf38460f9d119d2a6e.1630359290.git.gitgitgadget@gmail.com> (Johannes Schindelin via GitGitGadget's message of "Mon, 30 Aug 2021 21:34:43 +0000")

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> +static char *remote_default_branch(const char *url)
> +{
> +	struct child_process cp = CHILD_PROCESS_INIT;
> +	struct strbuf out = STRBUF_INIT;
> +
> +	cp.git_cmd = 1;
> +	strvec_pushl(&cp.args, "ls-remote", "--symref", url, "HEAD", NULL);
> +	strbuf_addstr(&out, "-\n");

Is this a workaround for the problem that the first "ref:" line
won't be found by looking for "\nref: " in the loop?  Cute, but the
extra "-" is a bit misleading.

> +	if (!pipe_command(&cp, NULL, 0, &out, 0, NULL, 0)) {
> +		char *ref = out.buf;
> +
> +		while ((ref = strstr(ref + 1, "\nref: "))) {
> +			const char *p;
> +			char *head, *branch;
> +
> +			ref += strlen("\nref: ");
> +			head = strstr(ref, "\tHEAD");
> +
> +			if (!head || memchr(ref, '\n', head - ref))
> +				continue;

OK.  We expect "ref: " <refname> "\t" <head> "\n" where <head> is
"HEAD" for their .git/HEAD and refs/remotes/<nick>/HEAD for their
remote-tracking branch for the remote they call <nick>, on a single
line.  We reject a line that is not of that shape, and we reject a
line that is about remote-tracking branch by only looking for
"\tHEAD". Makes sense.

The strstr() goes from "ref + 1", which feels sloppy.  When we
reject the line we found that begins with "ref :", I would have
expected that the next scan would start at the beginning of the next
line, not from the middle of this line at the first letter 'e' in
'refs/heads/' on the current line "ref: refs/heads/.....".  As long
as the current line is long enough, strstr() would not miss the
beginning of the next line, so it might be OK.

> +			if (skip_prefix(ref, "refs/heads/", &p)) {
> +				branch = xstrndup(p, head - p);
> +				strbuf_release(&out);
> +				return branch;
> +			}
> +
> +			error(_("remote HEAD is not a branch: '%.*s'"),
> +			      (int)(head - ref), ref);
> +			strbuf_release(&out);
> +			return NULL;

OK.  Any symref whose basename is HEAD in their remote-tracking
hierarchy would have been rejected earlier in the loop.

Is there a particular reason why we return early here, instead of
breaking out of hte loop and let the generic "failed to get" code
path below to handle this case?

> +		}
> +	}
> +	warning(_("failed to get default branch name from remote; "
> +		  "using local default"));
> +	strbuf_reset(&out);
> +
> +	child_process_init(&cp);
> +	cp.git_cmd = 1;
> +	strvec_pushl(&cp.args, "symbolic-ref", "--short", "HEAD", NULL);
> +	if (!pipe_command(&cp, NULL, 0, &out, 0, NULL, 0)) {
> +		strbuf_trim(&out);
> +		return strbuf_detach(&out, NULL);
> +	}
> +
> +	strbuf_release(&out);
> +	error(_("failed to get default branch name"));
> +	return NULL;
> +}

> +static int cmd_clone(int argc, const char **argv)
> +{
> +	const char *branch = NULL;
> +	int full_clone = 0;
> +	struct option clone_options[] = {
> +		OPT_STRING('b', "branch", &branch, N_("<branch>"),
> +			   N_("branch to checkout after clone")),
> +		OPT_BOOL(0, "full-clone", &full_clone,
> +			 N_("when cloning, create full working directory")),
> +		OPT_END(),
> +	};
> +	const char * const clone_usage[] = {
> +		N_("scalar clone [<options>] [--] <repo> [<dir>]"),
> +		NULL
> +	};
> +	const char *url;
> +	char *enlistment = NULL, *dir = NULL;
> +	struct strbuf buf = STRBUF_INIT;
> +	int res;
> +
> +	argc = parse_options(argc, argv, NULL, clone_options, clone_usage, 0);
> +
> +	if (argc == 2) {
> +		url = argv[0];
> +		enlistment = xstrdup(argv[1]);
> +	} else if (argc == 1) {
> +		url = argv[0];
> +
> +		strbuf_addstr(&buf, url);
> +		/* Strip trailing slashes, if any */
> +		while (buf.len > 0 && is_dir_sep(buf.buf[buf.len - 1]))
> +			strbuf_setlen(&buf, buf.len - 1);
> +		/* Strip suffix `.git`, if any */
> +		strbuf_strip_suffix(&buf, ".git");
> +
> +		enlistment = find_last_dir_sep(buf.buf);
> +		if (!enlistment) {
> +			die(_("cannot deduce worktree name from '%s'"), url);
> +		}
> +		enlistment = xstrdup(enlistment + 1);
> +	} else {
> +		usage_msg_opt(_("You must specify a repository to clone."),
> +			      clone_usage, clone_options);
> +	}
> +
> +	if (is_directory(enlistment))
> +		die(_("directory '%s' exists already"), enlistment);
> +
> +	dir = xstrfmt("%s/src", enlistment);
> +
> +	strbuf_reset(&buf);
> +	if (branch)
> +		strbuf_addf(&buf, "init.defaultBranch=%s", branch);
> +	else {
> +		char *b = repo_default_branch_name(the_repository, 1);
> +		strbuf_addf(&buf, "init.defaultBranch=%s", b);
> +		free(b);

Doesn't "git clone" already use their HEAD without having to make an
extra "git ls-remote" roundtrip?

Ahh, you do not do "git clone"; you do "git init", set things up,
and then "git fetch" and checkout, all manually.

Which is kind of shame.

I wonder if it is a cleaner implementation to give a new option to
"git clone" that gives a command sequence (not necessarily have to
be implemented as a shell script) that specifies necessary
pre-configuration steps to be done before the command starts the
transfer step.

  parent reply	other threads:[~2021-09-01 16:45 UTC|newest]

Thread overview: 303+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-30 21:34 [PATCH 00/15] [RFC] Upstreaming the Scalar command Johannes Schindelin via GitGitGadget
2021-08-30 21:34 ` [PATCH 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-08-30 21:34 ` [PATCH 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-08-30 21:34 ` [PATCH 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-08-31  8:15   ` Ævar Arnfjörð Bjarmason
2021-08-30 21:34 ` [PATCH 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-08-31  8:11   ` Ævar Arnfjörð Bjarmason
2021-08-31 14:22     ` Derrick Stolee
2021-09-01 16:16   ` Junio C Hamano
2021-09-03 15:41     ` Johannes Schindelin
2021-09-03 17:35       ` Junio C Hamano
2021-08-30 21:34 ` [PATCH 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-08-30 21:34 ` [PATCH 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-08-30 21:34 ` [PATCH 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-08-30 21:34 ` [PATCH 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-08-31  8:23   ` Ævar Arnfjörð Bjarmason
2021-08-31 16:47     ` Eric Sunshine
2021-09-03 15:21       ` Johannes Schindelin
2021-09-01 16:45   ` Junio C Hamano [this message]
2021-09-03 12:30     ` Derrick Stolee
2021-09-03 17:18       ` Junio C Hamano
2021-09-03 15:20     ` Johannes Schindelin
2021-09-03 17:29       ` Junio C Hamano
2021-09-08 18:59         ` Johannes Schindelin
2021-09-09 10:29           ` Ævar Arnfjörð Bjarmason
2021-09-28  5:19   ` Elijah Newren
2021-10-06 20:40     ` Johannes Schindelin
2021-10-07 14:09       ` Elijah Newren
2021-08-30 21:34 ` [PATCH 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-08-30 21:34 ` [PATCH 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-08-31  8:27   ` Ævar Arnfjörð Bjarmason
2021-09-03 15:50     ` Johannes Schindelin
2021-09-03 17:49       ` Junio C Hamano
2021-09-08 19:11         ` Johannes Schindelin
2021-08-30 21:34 ` [PATCH 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-08-31  8:29   ` Ævar Arnfjörð Bjarmason
2021-09-03 15:53     ` Johannes Schindelin
2021-09-06  1:01       ` Ævar Arnfjörð Bjarmason
2021-08-30 21:34 ` [PATCH 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-08-31  6:19   ` Eric Sunshine
2021-09-03 15:23     ` Johannes Schindelin
2021-09-03 17:02       ` Eric Sunshine
2021-09-08 18:21         ` Johannes Schindelin
2021-08-30 21:34 ` [PATCH 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-08-30 21:34 ` [PATCH 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-08-31  6:24   ` Eric Sunshine
2021-09-03 15:24     ` Johannes Schindelin
2021-08-30 21:34 ` [PATCH 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-08-31  8:32   ` Ævar Arnfjörð Bjarmason
2021-08-31 14:30     ` Derrick Stolee
2021-08-31 14:52       ` Ævar Arnfjörð Bjarmason
2021-08-31  0:51 ` [PATCH 00/15] [RFC] Upstreaming the Scalar command Derrick Stolee
2021-09-01 15:00   ` Elijah Newren
2021-09-03 17:54 ` [PATCH v2 " Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-09-14 10:47     ` Ævar Arnfjörð Bjarmason
2021-09-03 17:54   ` [PATCH v2 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-09-04  8:58     ` Bagas Sanjaya
2021-09-08 19:11       ` Johannes Schindelin
2021-09-03 17:54   ` [PATCH v2 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-09-06  1:12     ` Ævar Arnfjörð Bjarmason
2021-09-08 19:23       ` Johannes Schindelin
2021-09-03 17:54   ` [PATCH v2 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-09-03 17:54   ` [PATCH v2 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-09-06  0:59   ` [PATCH v2 00/15] [RFC] Upstreaming the Scalar command Ævar Arnfjörð Bjarmason
2021-09-08 19:24   ` [PATCH v3 " Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-09-09 15:36       ` Elijah Newren
2021-09-13 13:32         ` Johannes Schindelin
2021-09-08 19:24     ` [PATCH v3 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-09-09  6:11       ` Bagas Sanjaya
2021-09-08 19:24     ` [PATCH v3 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-09-08 19:24     ` [PATCH v3 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-09-09 10:14     ` [PATCH v3 00/15] [RFC] Upstreaming the Scalar command Ævar Arnfjörð Bjarmason
2021-09-13 14:20       ` Ævar Arnfjörð Bjarmason
2021-09-13 20:53         ` Johannes Schindelin
2021-09-14 10:59           ` Ævar Arnfjörð Bjarmason
2021-09-14 14:24             ` Train station analogy, was " Johannes Schindelin
2021-09-14 17:29               ` Junio C Hamano
2021-09-14 18:09                 ` Ævar Arnfjörð Bjarmason
2021-09-14 20:35                   ` Derrick Stolee
2021-09-14 23:22                     ` Theodore Ts'o
2021-09-15 17:51                     ` Ævar Arnfjörð Bjarmason
2021-09-14 21:49                 ` Junio C Hamano
2021-10-06 20:09                   ` Johannes Schindelin
2021-10-06 20:25                     ` Junio C Hamano
2021-10-07 10:58                       ` Johannes Schindelin
2021-10-07  1:03                     ` Ævar Arnfjörð Bjarmason
2021-09-14 18:25               ` Ævar Arnfjörð Bjarmason
2021-09-14 14:39     ` [PATCH v4 00/15] " Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-09-24 12:52         ` Ævar Arnfjörð Bjarmason
2021-09-24 17:54           ` Junio C Hamano
2021-09-26 19:15             ` Ævar Arnfjörð Bjarmason
2021-09-27 20:32               ` Junio C Hamano
2021-09-14 14:39       ` [PATCH v4 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-09-28  5:01         ` Elijah Newren
2021-09-28  7:27           ` Ævar Arnfjörð Bjarmason
2021-10-06 20:32           ` Johannes Schindelin
2021-09-28  5:05         ` Elijah Newren
2021-10-06 20:38           ` Johannes Schindelin
2021-09-14 14:39       ` [PATCH v4 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-09-28  5:24         ` Elijah Newren
2021-10-06 20:43           ` Johannes Schindelin
2021-09-14 14:39       ` [PATCH v4 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-09-28  6:24         ` Elijah Newren
     [not found]           ` <468CE4B8-D2C9-4FBC-B801-739F86C88ACB@outlook.com>
2021-10-06 20:48             ` Johannes Schindelin
2021-09-14 14:39       ` [PATCH v4 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-09-14 14:39       ` [PATCH v4 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-09-14 15:10       ` [PATCH v4 00/15] Upstreaming the Scalar command Johannes Schindelin
2021-09-14 17:51         ` Junio C Hamano
2021-10-07 10:58       ` [PATCH v5 " Johannes Schindelin via GitGitGadget
2021-10-07 10:58         ` [PATCH v5 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-10-07 10:58         ` [PATCH v5 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-10-07 10:58         ` [PATCH v5 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-10-07 10:58         ` [PATCH v5 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-10-07 10:58         ` [PATCH v5 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-10-07 10:59         ` [PATCH v5 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-10-07 11:28         ` [PATCH v5 00/15] Upstreaming the Scalar command Ævar Arnfjörð Bjarmason
2021-10-27  8:27         ` [PATCH v6 " Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 01/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 02/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 03/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 04/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 05/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 06/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 07/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 08/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 09/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 10/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 11/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 12/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 13/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 14/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-10-27  8:27           ` [PATCH v6 15/15] scalar: accept -C and -c options before the subcommand Johannes Schindelin via GitGitGadget
2021-10-27 21:57           ` [PATCH v6 00/15] Upstreaming the Scalar command Derrick Stolee
2021-11-17 14:19           ` [PATCH v7 00/17] " Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 01/17] scalar: add a README with a roadmap Johannes Schindelin via GitGitGadget
2021-11-17 15:40               ` Derrick Stolee
2021-11-18 13:51                 ` Johannes Schindelin
2021-11-17 14:19             ` [PATCH v7 02/17] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 03/17] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 04/17] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 05/17] cmake: optionally build `scalar`, too Johannes Schindelin via GitGitGadget
2021-11-17 21:12               ` Matt Rogers
2021-11-18 13:32                 ` Johannes Schindelin
2021-11-17 14:19             ` [PATCH v7 06/17] ci: also run the `scalar` tests Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 07/17] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 08/17] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 09/17] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 10/17] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 11/17] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 12/17] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 13/17] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 14/17] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 15/17] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 16/17] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-11-17 14:19             ` [PATCH v7 17/17] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-11-18 14:11             ` [PATCH v7 00/17] Upstreaming the Scalar command Ævar Arnfjörð Bjarmason
2021-11-19 23:03             ` [PATCH v8 " Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 01/17] scalar: add a README with a roadmap Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 02/17] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 03/17] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 04/17] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-11-30 13:27                 ` Ævar Arnfjörð Bjarmason
2021-11-19 23:03               ` [PATCH v8 05/17] cmake: optionally build `scalar`, too Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 06/17] ci: also run the `scalar` tests Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 07/17] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 08/17] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 09/17] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 10/17] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 11/17] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 12/17] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 13/17] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 14/17] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 15/17] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 16/17] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-11-19 23:03               ` [PATCH v8 17/17] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-11-20 17:22               ` [PATCH v8 00/17] Upstreaming the Scalar command Elijah Newren
2021-11-22 12:21                 ` Johannes Schindelin
2021-11-22 16:36                   ` Ævar Arnfjörð Bjarmason
2021-11-22 22:08                     ` Johannes Schindelin
2021-11-22 23:29                       ` Ævar Arnfjörð Bjarmason
2021-11-23 11:52                         ` Johannes Schindelin
2021-11-23 12:45                           ` Ævar Arnfjörð Bjarmason
2021-11-23 13:05                             ` Johannes Schindelin
2021-11-30 11:54               ` [PATCH v9 " Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 01/17] scalar: add a README with a roadmap Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 02/17] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 03/17] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 04/17] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 05/17] cmake: optionally build `scalar`, too Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 06/17] ci: also run the `scalar` tests Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 07/17] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 08/17] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 09/17] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 10/17] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 11/17] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 12/17] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 13/17] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 14/17] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 15/17] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 16/17] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-11-30 11:54                 ` [PATCH v9 17/17] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-11-30 12:16                 ` [PATCH v9 00/17] Upstreaming the Scalar command Ævar Arnfjörð Bjarmason
2021-11-30 14:11                   ` Johannes Schindelin
2021-11-30 14:50                     ` Ævar Arnfjörð Bjarmason
2021-12-01 17:58                     ` Junio C Hamano
2021-12-02 14:53                       ` Johannes Schindelin
2021-12-02 17:03                         ` Junio C Hamano
2021-12-02 17:39                           ` Elijah Newren
2021-12-02 18:42                             ` Junio C Hamano
2021-12-08 11:26                               ` Johannes Schindelin
2021-12-09  4:02                                 ` Junio C Hamano
2021-12-03 13:34                 ` [PATCH v10 00/15] " Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 01/15] scalar: add a README with a roadmap Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 02/15] scalar: create a rudimentary executable Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 03/15] scalar: start documenting the command Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 04/15] scalar: create test infrastructure Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 05/15] scalar: 'register' sets recommended config and starts maintenance Derrick Stolee via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 06/15] scalar: 'unregister' stops background maintenance Derrick Stolee via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 07/15] scalar: let 'unregister' handle a deleted enlistment directory gracefully Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 08/15] scalar: implement 'scalar list' Derrick Stolee via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 09/15] scalar: implement the `clone` subcommand Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 10/15] scalar: teach 'clone' to support the --single-branch option Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 11/15] scalar: implement the `run` command Derrick Stolee via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 12/15] scalar: allow reconfiguring an existing enlistment Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 13/15] scalar: teach 'reconfigure' to optionally handle all registered enlistments Johannes Schindelin via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 14/15] scalar: implement the `delete` command Matthew John Cheetham via GitGitGadget
2021-12-03 13:34                   ` [PATCH v10 15/15] scalar: implement the `version` command Johannes Schindelin via GitGitGadget
2021-12-03 15:48                   ` [PATCH v10 00/15] Upstreaming the Scalar command Elijah Newren
2021-12-05 10:02                     ` Junio C Hamano
2021-12-07 20:05                       ` Ævar Arnfjörð Bjarmason
2021-12-08 19:55                         ` Junio C Hamano
2021-12-08 20:04                           ` [RFC/PATCH] Makefile: add test-all target Junio C Hamano
2021-12-08 21:30                             ` Derrick Stolee
2021-12-08 22:22                               ` Junio C Hamano
2021-12-08 21:52                             ` Jeff King
2021-12-08 22:25                               ` Junio C Hamano
2021-12-09 17:57                               ` Junio C Hamano
2021-12-10  8:37                                 ` Jeff King
2021-12-13  9:12                                   ` Junio C Hamano
2021-12-09  3:44                             ` Ævar Arnfjörð Bjarmason
2021-12-09 18:12                               ` Junio C Hamano
2021-12-10  2:38                                 ` Ævar Arnfjörð Bjarmason
2021-12-10  8:50                                   ` Jeff King
2021-12-10  9:30                                     ` Ævar Arnfjörð Bjarmason
2021-12-10 23:43                                     ` Johannes Schindelin
2021-12-10 23:27                                 ` Elijah Newren
2021-12-13  9:12                                   ` Junio C Hamano
2021-12-10 23:14                             ` Johannes Schindelin
2021-12-13  8:42                               ` Junio C Hamano
2021-12-14 13:16                                 ` Jeff King
2021-12-14 13:18                                   ` Jeff King
2021-12-11 11:08                             ` Bagas Sanjaya
2021-12-08 11:15                       ` [PATCH v10 00/15] Upstreaming the Scalar command Johannes Schindelin
2021-12-08 13:04                         ` Ævar Arnfjörð Bjarmason
2021-12-08 14:17                         ` Derrick Stolee
2021-12-08 18:29                         ` Elijah Newren
2021-12-09  3:52                         ` Junio C Hamano
2021-12-11  0:29                           ` Johannes Schindelin
2021-12-11  1:07                             ` Ævar Arnfjörð Bjarmason
2021-12-11  5:15                             ` Elijah Newren
2021-12-11 13:46                               ` Johannes Schindelin

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=xmqqsfyoqm6e.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=johannes.schindelin@gmx.de \
    /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.