git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Glen Choo <chooglen@google.com>
Cc: git@vger.kernel.org, Taylor Blau <me@ttaylorr.com>,
	Robert Coup <robert@coup.net.nz>
Subject: Re: [PATCH v2 02/10] submodule--helper: don't use global --super-prefix in "absorbgitdirs"
Date: Thu, 17 Nov 2022 19:10:02 +0100	[thread overview]
Message-ID: <221117.86tu2xh2i1.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <kl6la64tp6xc.fsf@chooglen-macbookpro.roam.corp.google.com>


On Mon, Nov 14 2022, Glen Choo wrote:

> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>> The "--super-prefix" facility was introduced in [1] has always been a
>> transitory hack, which is why we've made it an error to supply it as
>> an option to "git" to commands that don't know about it.
>>
>> That's been a good goal, as it has a global effect we haven't wanted
>> calls to get_super_prefix() from built-ins we didn't expect.
>>
>> But it has meant that when we've had chains of different built-ins
>> using it all of the processes in that "chain" have needed to support
>> it, and worse processes that don't need it have needed to ask for
>> "SUPPORT_SUPER_PREFIX" because their parent process needs it.
>>
>> That's how "fsmonitor--daemon" ended up with it, per [2] it's called
>> from (among other things) "submodule--helper absorbgitdirs", but as we
>> declared "submodule--helper" as "SUPPORT_SUPER_PREFIX" we needed to
>> declare "fsmonitor--daemon" as accepting it too, even though it
>> doesn't care about it.
>>
>> But in the case of "absorbgitdirs" it only needed "--super-prefix" to
>> invoke itself recursively, and we'd never have another "in-between"
>> process in the chain. So we didn't need the bigger hammer of "git
>> --super-prefix", and the "setenv(GIT_SUPER_PREFIX_ENVIRONMENT, ...)"
>> that it entails.
>>
>> Let's instead accept a hidden "--super-prefix" option to
>> "submodule--helper absorbgitdirs" itself.
>>
>> Eventually (as with all other "--super-prefix" users) we'll want to
>> clean this code up so that this all happens in-process. I.e. needing
>> any variant of "--super-prefix" is itself a hack around our various
>> global state, and implicit reliance on "the_repository". This stepping
>> stone makes such an eventual change easier, as we'll need to deal with
>> less global state at that point.
>>
>> The "fsmonitor--daemon" test adjusted here was added in [3]. The
>> comment added in that commit has been out-of-date from the beginning,
>> and the "have_t2_error_event()" was being overly specific in testing
>> for a bug that we *don't* have. Let's instead test for the stdout and
>> stderr that we *do have*.
>
> I didn't understand this bit initially, because I read this as
> "have_t2_error_event() isn't catching bugs", which isn't true. But I see
> what you mean after inspecting the test_cmp output:
>
>   @@ -1 +1,2 @@
>   Migrating git directory of 'dir_1/dir_2/sub' from 'dir_1/dir_2/sub/.git' to '.git/modules/dir_1/dir_2/sub'
>   +fatal: fsmonitor--daemon doesn't support --super-prefix
>
> IOW, it doesn't make sense to inspecting the tr2 output for stray
> warnings when our stderr is so obviously broken. But at the end of the
> series, I don't think we even need this test at all because if we don't
> have a global "--super-prefix", there's literally no reason for
> fsmonitor--daemon to worry about absorbgitdirs or "supporting" the super
> prefix. That's why I removed it in [1].
>
> Wondering aloud, that stderr suggests that the "git submodule absorbgitdirs"
> invocation failed. I wonder why the test didn't catch a bad exit code
> (and resulting in us inspecting stderr unnecessarily). I think it's not
> worth looking too closely at right now, but we could revisit this after
> we get builtin/submodule.c.
>
> [1] https://lore.kernel.org/git/20221109004708.97668-5-chooglen@google.com

I'm prepping a re-roll where I'll keep some of this test, as testing
fsmonitor+absorbgitdirs is worthhwile, but the commit message etc. is
rephrased.

>> diff --git a/git.c b/git.c
>> index 10202a7f126..b1b7e1a837e 100644
>> --- a/git.c
>> +++ b/git.c
>> @@ -539,7 +539,7 @@ static struct cmd_struct commands[] = {
>>  	{ "format-patch", cmd_format_patch, RUN_SETUP },
>>  	{ "fsck", cmd_fsck, RUN_SETUP },
>>  	{ "fsck-objects", cmd_fsck, RUN_SETUP },
>> -	{ "fsmonitor--daemon", cmd_fsmonitor__daemon, SUPPORT_SUPER_PREFIX | RUN_SETUP },
>> +	{ "fsmonitor--daemon", cmd_fsmonitor__daemon, RUN_SETUP },
>>  	{ "gc", cmd_gc, RUN_SETUP },
>>  	{ "get-tar-commit-id", cmd_get_tar_commit_id, NO_PARSEOPT },
>>  	{ "grep", cmd_grep, RUN_SETUP_GENTLY },
>> diff --git a/parse-options.h b/parse-options.h
>> index b6ef86e0d15..50d852f2991 100644
>> --- a/parse-options.h
>> +++ b/parse-options.h
>> @@ -369,6 +369,10 @@ int parse_opt_tracking_mode(const struct option *, const char *, int);
>>  	{ OPTION_CALLBACK, 0, "abbrev", (var), N_("n"),	\
>>  	  N_("use <n> digits to display object names"),	\
>>  	  PARSE_OPT_OPTARG, &parse_opt_abbrev_cb, 0 }
>> +#define OPT__SUPER_PREFIX(var) \
>> +	OPT_STRING_F(0, "super-prefix", (var), N_("prefix"), \
>> +		N_("prefixed path to initial superproject"), PARSE_OPT_HIDDEN)
>> +
>
> Could we default to "" instead of NULL? (possibly via a callback). I
> think there's never any good reason to have NULL instead of "", e.g.
> since this is internal, we don't care to distinguish between
> "--super-prefix=''" and not passing "--super-prefix" at all...

I saw this comment on another patch, I think I'll keep it for now, but I
updated the reason: It's because the "prefix" is either NULL or a
non-zero length string, so we're doing the same here to be consistent
with it.

I think that makes sense, but ultimately it's an arbitrary choice, but
as they're sibling variables in the cases they're used doing the same
seems worthwhile...

>>  #define OPT__COLOR(var, h) \
>>  	OPT_COLOR_FLAG(0, "color", (var), (h))
>>  #define OPT_COLUMN(s, l, v, h) \
>> diff --git a/submodule.c b/submodule.c
>> index c47358097fd..d9fd0af81b6 100644
>> --- a/submodule.c
>> +++ b/submodule.c
>> @@ -2268,7 +2268,8 @@ int validate_submodule_git_dir(char *git_dir, const char *submodule_name)
>>   * Embeds a single submodules git directory into the superprojects git dir,
>>   * non recursively.
>>   */
>> -static void relocate_single_git_dir_into_superproject(const char *path)
>> +static void relocate_single_git_dir_into_superproject(const char *path,
>> +						      const char *super_prefix)
>>  {
>>  	char *old_git_dir = NULL, *real_old_git_dir = NULL, *real_new_git_dir = NULL;
>>  	struct strbuf new_gitdir = STRBUF_INIT;
>> @@ -2302,7 +2303,7 @@ static void relocate_single_git_dir_into_superproject(const char *path)
>>  	       real_old_git_dir[off] == real_new_git_dir[off])
>>  		off++;
>>  	fprintf(stderr, _("Migrating git directory of '%s%s' from '%s' to '%s'\n"),
>> -		get_super_prefix_or_empty(), path,
>> +		(super_prefix ? super_prefix : ""), path,
>>  		real_old_git_dir + off, real_new_git_dir + off);
>
>
> Which would make sites like these a bit cleaner.
>
> Tangentially, 'default to "" if NULL' sounds like a common pattern. Is
> there a good reason not to have a macro or inline function to do that?
> e.g. we think the ternary expression is good enough?)

See above.

>>  
>>  	relocate_gitdir(path, real_old_git_dir, real_new_git_dir);
>> @@ -2313,7 +2314,8 @@ static void relocate_single_git_dir_into_superproject(const char *path)
>>  	strbuf_release(&new_gitdir);
>>  }
>>  
>> -static void absorb_git_dir_into_superproject_recurse(const char *path)
>> +static void absorb_git_dir_into_superproject_recurse(const char *path,
>> +						     const char *super_prefix)
>>  {
>>  
>>  	struct child_process cp = CHILD_PROCESS_INIT;
>> @@ -2321,10 +2323,11 @@ static void absorb_git_dir_into_superproject_recurse(const char *path)
>>  	cp.dir = path;
>>  	cp.git_cmd = 1;
>>  	cp.no_stdin = 1;
>> -	strvec_pushf(&cp.args, "--super-prefix=%s%s/",
>> -		     get_super_prefix_or_empty(), path);
>>  	strvec_pushl(&cp.args, "submodule--helper",
>>  		     "absorbgitdirs", NULL);
>> +	strvec_pushf(&cp.args, "--super-prefix=%s%s/", super_prefix ?
>> +		     super_prefix : "", path);
>> +
>>  	prepare_submodule_repo_env(&cp.env);
>>  	if (run_command(&cp))
>>  		die(_("could not recurse into submodule '%s'"), path);
>> @@ -2335,7 +2338,8 @@ static void absorb_git_dir_into_superproject_recurse(const char *path)
>>   * having its git directory within the working tree to the git dir nested
>>   * in its superprojects git dir under modules/.
>>   */
>> -void absorb_git_dir_into_superproject(const char *path)
>> +void absorb_git_dir_into_superproject_sp(const char *path,
>> +					 const char *super_prefix)
>>  {
>>  	int err_code;
>>  	const char *sub_git_dir;
>> @@ -2377,14 +2381,14 @@ void absorb_git_dir_into_superproject(const char *path)
>>  		char *real_common_git_dir = real_pathdup(get_git_common_dir(), 1);
>>  
>>  		if (!starts_with(real_sub_git_dir, real_common_git_dir))
>> -			relocate_single_git_dir_into_superproject(path);
>> +			relocate_single_git_dir_into_superproject(path, super_prefix);
>>  
>>  		free(real_sub_git_dir);
>>  		free(real_common_git_dir);
>>  	}
>>  	strbuf_release(&gitdir);
>>  
>> -	absorb_git_dir_into_superproject_recurse(path);
>> +	absorb_git_dir_into_superproject_recurse(path, super_prefix);
>>  }
>>  
>>  int get_superproject_working_tree(struct strbuf *buf)
>> diff --git a/submodule.h b/submodule.h
>> index b52a4ff1e73..e5ee13fb06a 100644
>> --- a/submodule.h
>> +++ b/submodule.h
>> @@ -164,7 +164,12 @@ void submodule_unset_core_worktree(const struct submodule *sub);
>>   */
>>  void prepare_submodule_repo_env(struct strvec *env);
>>  
>> -void absorb_git_dir_into_superproject(const char *path);
>> +void absorb_git_dir_into_superproject_sp(const char *path,
>> +					 const char *super_prefix);
>> +static inline void absorb_git_dir_into_superproject(const char *path)
>> +{
>> +	absorb_git_dir_into_superproject_sp(path, NULL);
>> +}
>
> Is there a reason you chose to go with _sp() instead of changing the
> original function signature? I tested out that change, and it seems
> rather small (absorb_git_dir_into_superproject() only has 4 call sites).

I've just changed that, so no more *_sp()...

> Crucially, changing the signature catches a "git read-tree" call site:
>
>   diff --git a/submodule.c b/submodule.c
>   index d9fd0af81b..e79a04d3e3 100644
>   --- a/submodule.c
>   +++ b/submodule.c
>   @@ -2139,7 +2139,9 @@ int submodule_move_head(const char *path,
>           if (!(flags & SUBMODULE_MOVE_HEAD_DRY_RUN)) {
>                   if (old_head) {
>                           if (!submodule_uses_gitfile(path))
>   -                               absorb_git_dir_into_superproject(path);
>   +                               /* Pass super_prefix properly later. */
>   +                               absorb_git_dir_into_superproject(path,
>   +                                                                get_super_prefix());
>                   } else {
>                           struct strbuf gitdir = STRBUF_INIT;
>                           submodule_name_to_gitdir(&gitdir, the_repository,
>
> which would otherwise be broken since we used to read the global super
> prefix, but we don't do that in this patch. This has no test coverage
> (bleh), but it shouldn't be too hard, something like:
>
>   git init super &&
>   cd super &&
>   # Create an unabsorbed submodule right in the worktree
>   git init sub &&
>   test_commit -C sub "foo" &&
>   git add sub &&
>   git commit -m "Add submodule" &&
>   test_commit "bar" &&
>   # This should invoke "git read-tree" and absorb the git dir.
>   # Or maybe we should invoke "git read-tree" directly?
>   git checkout --recurse-submodules HEAD^ 2>err &&
>   # Search for the shortened message
>   grep "Migrating submodule sub from sub to .git/modules/...." err

Ah! Yeah that is a good catch, and a great reason to do it this way.

I tried to come up with a test case that actually tested this. I.e. I
set a "here = 1" at that absorb_git_dir_into_superproject() in the diff
above, and then if BUG()'d out in that function, but the part where
we're about to recurse.

I couldn't get it to trigger, but I didn't look at it very
long. I.e. doesn't this require not this sort of test, but something
where it's being absorbed, *and* we'd walk and absorb it recursiveyl?

At least with checkout we then run into an error (can't remember the
message, sorry, this was earlier), and I haven't found a way to trigger
it.

But I'll poke it some more, but if you happen to have a test case for it
that would really help...

  reply	other threads:[~2022-11-17 18:15 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-09  0:47 [RFC PATCH 0/4] git: remove --super-prefix Glen Choo
2022-11-09  0:47 ` [RFC PATCH 1/4] submodule--helper: teach --toplevel-cwd-prefix Glen Choo
2022-11-09  2:37   ` Ævar Arnfjörð Bjarmason
2022-11-09  0:47 ` [RFC PATCH 2/4] fetch: refactor --submodule-prefix Glen Choo
2022-11-09  3:06   ` Ævar Arnfjörð Bjarmason
2022-11-09  0:47 ` [RFC PATCH 3/4] read-tree: teach --submodule-prefix Glen Choo
2022-11-09  3:13   ` Ævar Arnfjörð Bjarmason
2022-11-09  0:47 ` [RFC PATCH 4/4] git: remove --super-prefix Glen Choo
2022-11-09 19:34 ` [RFC PATCH 0/8] Get rid of "git --super-prefix" Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 1/8] submodule--helper: don't use global --super-prefix in "absorbgitdirs" Ævar Arnfjörð Bjarmason
2022-11-11  0:12     ` Glen Choo
2022-11-09 19:34   ` [RFC PATCH 2/8] submodule--helper: "deinit" has never used "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 3/8] submodule--helper: convert "foreach" to its own "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 4/8] submodule--helper: convert "sync" " Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 5/8] submodule--helper: convert "status" " Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 6/8] submodule--helper: convert "{update,clone}" to their " Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 7/8] submodule tests: test "git branch -t" output and stderr Ævar Arnfjörð Bjarmason
2022-11-09 19:34   ` [RFC PATCH 8/8] read-tree: add "--super-prefix" option, eliminate global Ævar Arnfjörð Bjarmason
2022-11-11  0:40     ` Glen Choo
2022-11-09 21:21   ` [RFC PATCH 0/8] Get rid of "git --super-prefix" Taylor Blau
2022-11-09 21:47     ` Ævar Arnfjörð Bjarmason
2022-11-09 22:27       ` Taylor Blau
2022-11-09 22:54         ` Ævar Arnfjörð Bjarmason
2022-11-10  0:45   ` Glen Choo
2022-11-10 10:51     ` Ævar Arnfjörð Bjarmason
2022-11-11  1:07       ` Glen Choo
2022-11-11 18:29         ` Glen Choo
2022-11-11 21:17           ` Ævar Arnfjörð Bjarmason
2022-11-11 21:51             ` Taylor Blau
2022-11-12  1:10             ` Glen Choo
2022-11-14 10:09               ` Ævar Arnfjörð Bjarmason
2022-11-14 23:33                 ` Glen Choo
2022-11-15  1:37                   ` Ævar Arnfjörð Bjarmason
2022-11-14 10:08   ` [PATCH v2 00/10] " Ævar Arnfjörð Bjarmason
2022-11-14 10:08     ` [PATCH v2 01/10] read-tree + fetch tests: test failing "--super-prefix" interaction Ævar Arnfjörð Bjarmason
2022-11-14 19:00       ` Glen Choo
2022-11-14 19:14         ` Ævar Arnfjörð Bjarmason
2022-11-14 19:49           ` Glen Choo
2022-11-14 10:08     ` [PATCH v2 02/10] submodule--helper: don't use global --super-prefix in "absorbgitdirs" Ævar Arnfjörð Bjarmason
2022-11-14 21:22       ` Glen Choo
2022-11-17 18:10         ` Ævar Arnfjörð Bjarmason [this message]
2022-11-14 10:08     ` [PATCH v2 03/10] submodule--helper: "deinit" has never used "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-14 10:08     ` [PATCH v2 04/10] submodule--helper: convert "foreach" to its own "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-14 21:56       ` Glen Choo
2022-11-17 18:14         ` Ævar Arnfjörð Bjarmason
2022-11-14 10:08     ` [PATCH v2 05/10] submodule--helper: convert "sync" " Ævar Arnfjörð Bjarmason
2022-11-14 10:08     ` [PATCH v2 06/10] submodule--helper: convert "status" " Ævar Arnfjörð Bjarmason
2022-11-14 10:08     ` [PATCH v2 07/10] submodule--helper: convert "{update,clone}" to their " Ævar Arnfjörð Bjarmason
2022-11-14 22:04       ` Glen Choo
2022-11-14 10:08     ` [PATCH v2 08/10] submodule tests: test "git branch -t" output and stderr Ævar Arnfjörð Bjarmason
2022-11-14 22:20       ` Glen Choo
2022-11-14 10:08     ` [PATCH v2 09/10] read-tree: add "--super-prefix" option, eliminate global Ævar Arnfjörð Bjarmason
2022-11-14 22:28       ` Glen Choo
2022-11-14 10:08     ` [PATCH v2 10/10] fetch: rename "--submodule-prefix" to "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-14 22:31       ` Glen Choo
2022-11-14 21:59     ` [PATCH v2 00/10] Get rid of "git --super-prefix" Taylor Blau
2022-11-14 23:20     ` Glen Choo
2022-11-14 23:39     ` Glen Choo
2022-11-15  1:27       ` Ævar Arnfjörð Bjarmason
2022-11-16 21:07         ` Glen Choo
2022-11-17 18:07           ` Ævar Arnfjörð Bjarmason
2022-11-21 19:16             ` Glen Choo
2022-11-19 12:41     ` [PATCH v3 0/9] " Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 1/9] read-tree + fetch tests: test failing "--super-prefix" interaction Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 2/9] submodule.c & submodule--helper: pass along "super_prefix" param Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 3/9] submodule--helper: don't use global --super-prefix in "absorbgitdirs" Ævar Arnfjörð Bjarmason
2022-11-22 19:53         ` Glen Choo
2022-11-19 12:41       ` [PATCH v3 4/9] submodule--helper: convert "foreach" to its own "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 5/9] submodule--helper: convert "sync" " Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 6/9] submodule--helper: convert "status" " Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 7/9] submodule--helper: convert "{update,clone}" to their " Ævar Arnfjörð Bjarmason
2022-11-19 12:41       ` [PATCH v3 8/9] read-tree: add "--super-prefix" option, eliminate global Ævar Arnfjörð Bjarmason
2022-11-22 19:57         ` Glen Choo
2022-11-19 12:41       ` [PATCH v3 9/9] fetch: rename "--submodule-prefix" to "--super-prefix" Ævar Arnfjörð Bjarmason
2022-11-22 22:29       ` [PATCH v3 0/9] Get rid of "git --super-prefix" Glen Choo
2022-12-15  9:32       ` [PATCH v4 " Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 1/9] submodule absorbgitdirs tests: add missing "Migrating git..." tests Ævar Arnfjörð Bjarmason
2022-12-15 20:54           ` Glen Choo
2022-12-20 10:32             ` Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 2/9] read-tree + fetch tests: test failing "--super-prefix" interaction Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 3/9] submodule.c & submodule--helper: pass along "super_prefix" param Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 4/9] submodule--helper: don't use global --super-prefix in "absorbgitdirs" Ævar Arnfjörð Bjarmason
2022-12-15 21:05           ` Glen Choo
2022-12-15  9:32         ` [PATCH v4 5/9] submodule--helper: convert "foreach" to its own "--super-prefix" Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 6/9] submodule--helper: convert "sync" " Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 7/9] submodule--helper: convert "status" " Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 8/9] submodule--helper: convert "{update,clone}" to their " Ævar Arnfjörð Bjarmason
2022-12-15  9:32         ` [PATCH v4 9/9] read-tree: add "--super-prefix" option, eliminate global Ævar Arnfjörð Bjarmason
2022-12-15 21:19         ` [PATCH v4 0/9] Get rid of "git --super-prefix" Glen Choo
2022-12-15 22:19           ` Junio C Hamano
2022-12-15 22:12         ` Junio C Hamano
2022-12-20 12:39         ` [PATCH v5 " Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 1/9] submodule absorbgitdirs tests: add missing "Migrating git..." tests Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 2/9] read-tree + fetch tests: test failing "--super-prefix" interaction Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 3/9] submodule.c & submodule--helper: pass along "super_prefix" param Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 4/9] submodule--helper: don't use global --super-prefix in "absorbgitdirs" Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 5/9] submodule--helper: convert "foreach" to its own "--super-prefix" Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 6/9] submodule--helper: convert "sync" " Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 7/9] submodule--helper: convert "status" " Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 8/9] submodule--helper: convert "{update,clone}" to their " Ævar Arnfjörð Bjarmason
2022-12-20 12:39           ` [PATCH v5 9/9] read-tree: add "--super-prefix" option, eliminate global Ævar Arnfjörð Bjarmason
2022-11-09 21:16 ` [RFC PATCH 0/4] git: remove --super-prefix Taylor Blau
2022-11-09 23:55   ` Glen Choo
2022-11-10  2:14     ` Taylor Blau
2022-11-10 23:49       ` Glen Choo

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=221117.86tu2xh2i1.gmgdl@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=chooglen@google.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=robert@coup.net.nz \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).