git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 0/9] Get rid of "git --super-prefix"

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Dec 15, 2022, 09:32 UTC
Message-ID
<cover-v4-0.9-00000000000-20221215T083502Z-avarab@gmail.com>
In-Reply-To
<cover-v3-0.9-00000000000-20221119T122853Z-avarab@gmail.com>

For a general summary see the v3's CL at https://lore.kernel.org/git/cover-v3-0.9-00000000000-20221119T122853Z-avarab@gmail.com/

Changes since v4:
* This isn't on top of the now-ejected "ab/submodule-no-abspath" any
  longer. Per
  https://lore.kernel.org/git/kl6la647ow7e.fsf@chooglen-macbookpro.roam.corp.google.com/
  we're not changing the output here anymore
* Extract & amend the test that "ab/submodule-no-abspath" added to
  test the existing behavior (using $(pwd) now).
* There were a couple of cases where I missed passing the
  "super_prefix", per earlier discussions we haven't found cases where
  it's used in practice, but let's keep diligently passing it along.
* I ejected the previous 10/10 to refactor "git fetch". I have more
  patches on top of this to do some post-refactoring (e.g. saving
  memory churn by getting rid of "submodule_prefix" from "struct
  repository"), but none of that's essential for now, so let's drop
  that patch.
Junio: There's a conflict here in t/t7527* with
ed/fsmonitor-inotify. The conflict is easily solved. This side should
be kept, except for the new "git -C ..." command that was added to
test_when_finished(), which needs to be carried over. A --remerge-diff
off the solved conflict:
	diff --git a/t/t7527-builtin-fsmonitor.sh b/t/t7527-builtin-fsmonitor.sh
	remerge CONFLICT (content): Merge conflict in t/t7527-builtin-fsmonitor.sh
	index 40c96c5f819..963c4df461e 100755
	--- a/t/t7527-builtin-fsmonitor.sh
	+++ b/t/t7527-builtin-fsmonitor.sh
	@@ -933,20 +933,8 @@ test_expect_success 'submodule always visited' '
	 # to do the work and this may try to read the index.  This will
	 # try to start the daemon in the submodule.
	-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4824f33224f (read-tree: add "--super-prefix" option, eliminate global)
	 test_expect_success "submodule absorbgitdirs implicitly starts daemon" '
	-	test_when_finished "rm -rf super; \
	-================================
	-have_t2_error_event () {
	-	log=$1
	-	msg="fsmonitor--daemon doesnQt support --super-prefix" &&
	-
	-	tr '\047' Q <$1 | grep -e "$msg"
	-}
	-
	-test_expect_success "stray submodule super-prefix warning" '
	 	test_when_finished "git -C super/dir_1/dir_2/sub fsmonitor--daemon stop; \
	 			    rm -rf super; \
	->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> f4fb2e9797d (Merge branch 'so/diff-merges-more' into seen)
	 			    rm -rf sub;   \
	 			    rm super-sub.trace" &&

Branch & passing CI at: https://github.com/avar/git/tree/avar/nuke-global-super-prefix-use-local-4

Glen Choo (1):
  read-tree + fetch tests: test failing "--super-prefix" interaction
Ævar Arnfjörð Bjarmason (8):
  submodule absorbgitdirs tests: add missing "Migrating git..." tests
  submodule.c & submodule--helper: pass along "super_prefix" param
  submodule--helper: don't use global --super-prefix in "absorbgitdirs"
  submodule--helper: convert "foreach" to its own "--super-prefix"
  submodule--helper: convert "sync" to its own "--super-prefix"
  submodule--helper: convert "status" to its own "--super-prefix"
  submodule--helper: convert "{update,clone}" to their own
    "--super-prefix"
  read-tree: add "--super-prefix" option, eliminate global
 Documentation/git.txt              |  8 +--
 builtin.h                          |  4 --
 builtin/checkout.c                 |  2 +-
 builtin/read-tree.c                |  1 +
 builtin/rm.c                       |  2 +-
 builtin/submodule--helper.c        | 87 ++++++++++++++++--------------
 cache.h                            |  2 -
 entry.c                            | 12 ++---
 entry.h                            |  6 ++-
 environment.c                      | 13 -----
 git.c                              | 41 +++-----------
 parse-options.h                    |  4 ++
 submodule.c                        | 50 ++++++++---------
 submodule.h                        |  8 +--
 t/t1001-read-tree-m-2way.sh        |  2 +-
 t/t5616-partial-clone.sh           | 43 +++++++++++++++
 t/t7412-submodule-absorbgitdirs.sh | 64 +++++++++++++++++++---
 t/t7527-builtin-fsmonitor.sh       | 36 +++++--------
 unpack-trees.c                     | 24 +++++----
 unpack-trees.h                     |  1 +
 20 files changed, 230 insertions(+), 180 deletions(-)
Range-diff against v3:
 1:  5f463bbefb5 !  1:  f479003941b submodule--helper absorbgitdirs: no abspaths in "Migrating git..."
    @@ Metadata
     Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## Commit message ##
    -    submodule--helper absorbgitdirs: no abspaths in "Migrating git..."
    +    submodule absorbgitdirs tests: add missing "Migrating git..." tests
     
    -    Change the "Migrating git directory" messages to avoid emitting
    -    absolute paths. We could use "old_git_dir" and "new_gitdir.buf" here
    -    sometimes, but not in all the cases covered by these tests,
    -    i.e. sometimes the latter will be an absolute path with a different
    -    prefix.
    +    Fix a blind spots in the tests surrounding "submodule absorbgitdirs"
    +    and test what output we emit, and how emitted the message and behavior
    +    interacts with a "git worktree" where the repository isn't at the base
    +    of the working directory.
     
    -    So let's just strip off the common prefix of the two strings, which
    -    handles the cases where we have nested submodules nicely. Note that
    -    this case is different than the one in get_submodule_displaypath() in
    -    "builtin/submodule--helper.c" handles, as we're dealing with the paths
    -    to the two ".git" here, not worktree paths.
    -
    -    Before this change we had no tests at all for this "Migrating git
    -    directory" output.
    +    The "$(pwd)" instead of "$PWD" here is needed due to Windows, where
    +    the latter will be a path like "/d/a/git/[...]", whereas we need
    +    "D:/a/git/[...]".
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    - ## submodule.c ##
    -@@ submodule.c: static void relocate_single_git_dir_into_superproject(const char *path)
    - 	char *old_git_dir = NULL, *real_old_git_dir = NULL, *real_new_git_dir = NULL;
    - 	struct strbuf new_gitdir = STRBUF_INIT;
    - 	const struct submodule *sub;
    -+	size_t off = 0;
    - 
    - 	if (submodule_uses_worktrees(path))
    - 		die(_("relocate_gitdir for submodule '%s' with "
    -@@ submodule.c: static void relocate_single_git_dir_into_superproject(const char *path)
    - 		die(_("could not create directory '%s'"), new_gitdir.buf);
    - 	real_new_git_dir = real_pathdup(new_gitdir.buf, 1);
    - 
    --	fprintf(stderr, _("Migrating git directory of '%s%s' from\n'%s' to\n'%s'\n"),
    -+	while (real_old_git_dir[off] && real_new_git_dir[off] &&
    -+	       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,
    --		real_old_git_dir, real_new_git_dir);
    -+		real_old_git_dir + off, real_new_git_dir + off);
    - 
    - 	relocate_gitdir(path, real_old_git_dir, real_new_git_dir);
    - 
    -
      ## t/t7412-submodule-absorbgitdirs.sh ##
    +@@ t/t7412-submodule-absorbgitdirs.sh: TEST_PASSES_SANITIZE_LEAK=true
    + . ./test-lib.sh
    + 
    + test_expect_success 'setup a real submodule' '
    ++	cwd="$(pwd)" &&
    + 	git init sub1 &&
    + 	test_commit -C sub1 first &&
    + 	git submodule add ./sub1 &&
     @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'setup a real submodule' '
      '
      
    @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'setup a real submodule'
      	git status >expect.1 &&
      	git -C sub1 rev-parse HEAD >expect.2 &&
     -	git submodule absorbgitdirs &&
    -+	cat >expect <<-\EOF &&
    -+	Migrating git directory of '\''sub1'\'' from '\''sub1/.git'\'' to '\''.git/modules/sub1'\''
    ++	cat >expect <<-EOF &&
    ++	Migrating git directory of '\''sub1'\'' from
    ++	'\''$cwd/sub1/.git'\'' to
    ++	'\''$cwd/.git/modules/sub1'\''
     +	EOF
     +	git submodule absorbgitdirs 2>actual &&
     +	test_cmp expect actual &&
    @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'setup nested submodule'
      	git status >expect.1 &&
      	git -C sub1/nested rev-parse HEAD >expect.2 &&
     -	git submodule absorbgitdirs &&
    -+	cat >expect <<-\EOF &&
    -+	Migrating git directory of '\''sub1/nested'\'' from '\''sub1/nested/.git'\'' to '\''.git/modules/sub1/modules/nested'\''
    ++	cat >expect <<-EOF &&
    ++	Migrating git directory of '\''sub1/nested'\'' from
    ++	'\''$cwd/sub1/nested/.git'\'' to
    ++	'\''$cwd/.git/modules/sub1/modules/nested'\''
     +	EOF
     +	git submodule absorbgitdirs 2>actual &&
     +	test_cmp expect actual &&
    @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 're-setup nested submodu
      	git status >expect.1 &&
      	git -C sub1/nested rev-parse HEAD >expect.2 &&
     -	git submodule absorbgitdirs &&
    -+	cat >expect <<-\EOF &&
    -+	Migrating git directory of '\''sub1'\'' from '\''sub1/.git'\'' to '\''.git/modules/sub1'\''
    ++	cat >expect <<-EOF &&
    ++	Migrating git directory of '\''sub1'\'' from
    ++	'\''$cwd/sub1/.git'\'' to
    ++	'\''$cwd/.git/modules/sub1'\''
     +	EOF
     +	git submodule absorbgitdirs 2>actual &&
     +	test_cmp expect actual &&
      	test -f sub1/.git &&
      	test -f sub1/nested/.git &&
      	test -d .git/modules/sub1/modules/nested &&
    +@@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'absorb the git dir in a nested submodule' '
    + 	test_cmp expect.2 actual.2
    + '
    + 
    ++test_expect_success 'absorb the git dir outside of primary worktree' '
    ++	test_when_finished "rm -rf repo-bare.git" &&
    ++	git clone --bare . repo-bare.git &&
    ++	test_when_finished "rm -rf repo-wt" &&
    ++	git -C repo-bare.git worktree add ../repo-wt &&
    ++
    ++	test_when_finished "rm -f .gitconfig" &&
    ++	test_config_global protocol.file.allow always &&
    ++	git -C repo-wt submodule update --init &&
    ++	git init repo-wt/sub2 &&
    ++	test_commit -C repo-wt/sub2 A &&
    ++	git -C repo-wt submodule add ./sub2 sub2 &&
    ++	cat >expect <<-EOF &&
    ++	Migrating git directory of '\''sub2'\'' from
    ++	'\''$cwd/repo-wt/sub2/.git'\'' to
    ++	'\''$cwd/repo-bare.git/worktrees/repo-wt/modules/sub2'\''
    ++	EOF
    ++	DO_IT=1 git -C repo-wt submodule absorbgitdirs 2>actual &&
    ++	test_cmp expect actual
    ++'
    ++
    + test_expect_success 'setup a gitlink with missing .gitmodules entry' '
    + 	git init sub2 &&
    + 	test_commit -C sub2 first &&
     @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'setup a gitlink with missing .gitmodules entry' '
      test_expect_success 'absorbing the git dir fails for incomplete submodules' '
      	git status >expect.1 &&
 2:  c930fc38356 =  2:  6424307a432 read-tree + fetch tests: test failing "--super-prefix" interaction
 3:  2e4a2236898 =  3:  b2e543bde03 submodule.c & submodule--helper: pass along "super_prefix" param
 4:  6e10a47c60a !  4:  bde9038c4e3 submodule--helper: don't use global --super-prefix in "absorbgitdirs"
    @@ submodule.c: int validate_submodule_git_dir(char *git_dir, const char *submodule
      	char *old_git_dir = NULL, *real_old_git_dir = NULL, *real_new_git_dir = NULL;
      	struct strbuf new_gitdir = STRBUF_INIT;
     @@ submodule.c: 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"),
    + 	real_new_git_dir = real_pathdup(new_gitdir.buf, 1);
    + 
    + 	fprintf(stderr, _("Migrating git directory of '%s%s' from\n'%s' to\n'%s'\n"),
     -		get_super_prefix_or_empty(), path,
     +		super_prefix ? super_prefix : "", path,
    - 		real_old_git_dir + off, real_new_git_dir + off);
    + 		real_old_git_dir, real_new_git_dir);
      
      	relocate_gitdir(path, real_old_git_dir, real_new_git_dir);
     @@ submodule.c: static void absorb_git_dir_into_superproject_recurse(const char *path,
    @@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'submodule always visited' '
     -}
     +# try to start the daemon in the submodule.
      
    - test_expect_success "stray submodule super-prefix warning" '
    +-test_expect_success "stray submodule super-prefix warning" '
    ++test_expect_success "submodule absorbgitdirs implicitly starts daemon" '
      	test_when_finished "rm -rf super; \
    --			    rm -rf sub;   \
    --			    rm super-sub.trace" &&
    -+			    rm -rf sub" &&
    - 
    - 	create_super super &&
    - 	create_sub sub &&
    + 			    rm -rf sub;   \
    + 			    rm super-sub.trace" &&
     @@ t/t7527-builtin-fsmonitor.sh: test_expect_success "stray submodule super-prefix warning" '
      
      	test_path_is_dir super/dir_1/dir_2/sub/.git &&
      
    --	GIT_TRACE2_EVENT="$PWD/super-sub.trace" \
    --		git -C super submodule absorbgitdirs &&
    --
    --	! have_t2_error_event super-sub.trace
    -+	cat >expect <<-\EOF &&
    -+	Migrating git directory of '\''dir_1/dir_2/sub'\'' from '\''dir_1/dir_2/sub/.git'\'' to '\''.git/modules/dir_1/dir_2/sub'\''
    ++	cwd="$(cd super && pwd)" &&
    ++	cat >expect <<-EOF &&
    ++	Migrating git directory of '\''dir_1/dir_2/sub'\'' from
    ++	'\''$cwd/dir_1/dir_2/sub/.git'\'' to
    ++	'\''$cwd/.git/modules/dir_1/dir_2/sub'\''
     +	EOF
    -+	git -C super submodule absorbgitdirs >out 2>actual &&
    + 	GIT_TRACE2_EVENT="$PWD/super-sub.trace" \
    +-		git -C super submodule absorbgitdirs &&
    ++		git -C super submodule absorbgitdirs >out 2>actual &&
     +	test_cmp expect actual &&
    -+	test_must_be_empty out
    ++	test_must_be_empty out &&
    + 
    +-	! have_t2_error_event super-sub.trace
    ++	# Confirm that the trace2 log contains a record of the
    ++	# daemon starting.
    ++	test_subcommand git fsmonitor--daemon start <super-sub.trace
      '
      
      # On a case-insensitive file system, confirm that the daemon
 5:  da86eb3b867 =  5:  4da58e7ea50 submodule--helper: convert "foreach" to its own "--super-prefix"
 6:  2eb583148a6 =  6:  8dff576df7d submodule--helper: convert "sync" to its own "--super-prefix"
 7:  8d8925c7e1f =  7:  8800a433e29 submodule--helper: convert "status" to its own "--super-prefix"
 8:  754a7489aa5 =  8:  54c1e29de1e submodule--helper: convert "{update,clone}" to their own "--super-prefix"
 9:  f952fa3d01f !  9:  4824f33224f read-tree: add "--super-prefix" option, eliminate global
    @@ submodule.c: int submodule_move_head(const char *path,
      
      			/* make sure the index is clean as well */
     -			submodule_reset_index(path);
    -+			submodule_reset_index(path, NULL);
    ++			submodule_reset_index(path, super_prefix);
      		}
      
      		if (old_head && (flags & SUBMODULE_MOVE_HEAD_FORCE)) {
    @@ unpack-trees.c: static int check_submodule_move_head(const struct cache_entry *c
      		flags |= SUBMODULE_MOVE_HEAD_FORCE;
      
     -	if (submodule_move_head(ce->name, old_id, new_id, flags))
    -+	if (submodule_move_head(ce->name, NULL, old_id, new_id, flags))
    ++	if (submodule_move_head(ce->name, o->super_prefix, old_id, new_id,
    ++				flags))
      		return add_rejected_path(o, ERROR_WOULD_LOSE_SUBMODULE, ce->name);
      	return 0;
      }
    @@ unpack-trees.c: int stash_worktree_untracked_merge(const struct cache_entry * co
     
      ## unpack-trees.h ##
     @@ unpack-trees.h: struct unpack_trees_options {
    - 		     dry_run;
    + 		     skip_cache_tree_update;
      	enum unpack_trees_reset_type reset;
      	const char *prefix;
     +	const char *super_prefix;
10:  1aa4019527a <  -:  ----------- fetch: rename "--submodule-prefix" to "--super-prefix"
-- 
2.39.0.rc2.1048.g0e5493b8d5b
Previous: Glen ChooNext: Ævar Arnfjörð Bjarmason
Message 76 of 105 in “git: remove --super-prefix”
  1. 0/4 git: remove --super-prefixGlen Choo, Nov 9, 2022
  2. 1/4 submodule--helper: teach --toplevel-cwd-prefixGlen Choo, Nov 9, 2022
  3. Ævar Arnfjörð BjarmasonNov 9, 2022
  4. 2/4 fetch: refactor --submodule-prefixGlen Choo, Nov 9, 2022
  5. Ævar Arnfjörð BjarmasonNov 9, 2022
  6. 3/4 read-tree: teach --submodule-prefixGlen Choo, Nov 9, 2022
  7. Ævar Arnfjörð BjarmasonNov 9, 2022
  8. 4/4 git: remove --super-prefixGlen Choo, Nov 9, 2022
  9. 0/8 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  10. 1/8 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  11. Glen ChooNov 11, 2022
  12. 2/8 submodule--helper: "deinit" has never used "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  13. 3/8 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  14. 4/8 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  15. 5/8 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  16. 6/8 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  17. 7/8 submodule tests: test "git branch -t" output and stderrÆvar Arnfjörð Bjarmason, Nov 9, 2022
  18. 8/8 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 9, 2022
  19. Glen ChooNov 11, 2022
  20. Taylor BlauNov 9, 2022
  21. Ævar Arnfjörð BjarmasonNov 9, 2022
  22. Taylor BlauNov 9, 2022
  23. Ævar Arnfjörð BjarmasonNov 9, 2022
  24. Glen ChooNov 10, 2022
  25. Ævar Arnfjörð BjarmasonNov 10, 2022
  26. Glen ChooNov 11, 2022
  27. Glen ChooNov 11, 2022
  28. Ævar Arnfjörð BjarmasonNov 11, 2022
  29. Taylor BlauNov 11, 2022
  30. Glen ChooNov 12, 2022
  31. Ævar Arnfjörð BjarmasonNov 14, 2022
  32. Glen ChooNov 14, 2022
  33. Ævar Arnfjörð BjarmasonNov 15, 2022
  34. 00/10 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  35. 01/10 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Nov 14, 2022
  36. Glen ChooNov 14, 2022
  37. Ævar Arnfjörð BjarmasonNov 14, 2022
  38. Glen ChooNov 14, 2022
  39. 02/10 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  40. Glen ChooNov 14, 2022
  41. Ævar Arnfjörð BjarmasonNov 17, 2022
  42. 03/10 submodule--helper: "deinit" has never used "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  43. 04/10 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  44. Glen ChooNov 14, 2022
  45. Ævar Arnfjörð BjarmasonNov 17, 2022
  46. 05/10 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  47. 06/10 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  48. 07/10 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  49. Glen ChooNov 14, 2022
  50. 08/10 submodule tests: test "git branch -t" output and stderrÆvar Arnfjörð Bjarmason, Nov 14, 2022
  51. Glen ChooNov 14, 2022
  52. 10/10 fetch: rename "--submodule-prefix" to "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  53. Glen ChooNov 14, 2022
  54. 09/10 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 14, 2022
  55. Glen ChooNov 14, 2022
  56. Taylor BlauNov 14, 2022
  57. Glen ChooNov 14, 2022
  58. Glen ChooNov 14, 2022
  59. Ævar Arnfjörð BjarmasonNov 15, 2022
  60. Glen ChooNov 16, 2022
  61. Ævar Arnfjörð BjarmasonNov 17, 2022
  62. Glen ChooNov 21, 2022
  63. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  64. 1/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Nov 19, 2022
  65. 3/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  66. Glen ChooNov 22, 2022
  67. 2/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Nov 19, 2022
  68. 4/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  69. 6/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  70. 5/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  71. 7/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  72. 9/9 fetch: rename "--submodule-prefix" to "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  73. 8/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 19, 2022
  74. Glen ChooNov 22, 2022
  75. Glen ChooNov 22, 2022
  76. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  77. 2/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Dec 15, 2022
  78. 1/9 submodule absorbgitdirs tests: add missing "Migrating git..." testsÆvar Arnfjörð Bjarmason, Dec 15, 2022
  79. Glen ChooDec 15, 2022
  80. Ævar Arnfjörð BjarmasonDec 20, 2022
  81. 3/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Dec 15, 2022
  82. 5/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  83. 4/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  84. Glen ChooDec 15, 2022
  85. 6/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  86. 7/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  87. 8/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  88. 9/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Dec 15, 2022
  89. Glen ChooDec 15, 2022
  90. Junio C HamanoDec 15, 2022
  91. Junio C HamanoDec 15, 2022
  92. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  93. 2/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Dec 20, 2022
  94. 1/9 submodule absorbgitdirs tests: add missing "Migrating git..." testsÆvar Arnfjörð Bjarmason, Dec 20, 2022
  95. 3/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Dec 20, 2022
  96. 5/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  97. 4/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  98. 6/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  99. 7/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  100. 8/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  101. 9/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Dec 20, 2022
  102. Taylor BlauNov 9, 2022
  103. Glen ChooNov 9, 2022
  104. Taylor BlauNov 10, 2022
  105. Glen ChooNov 10, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.