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

Re: [PATCH 03/10] submodule add: support multiple worktrees

From
Stefan Beller <sbeller@google.com>
Date
Jan 16, 2019, 22:27 UTC
Message-ID
<CAGZ79kY73eYTSDqyQAYcqVJn4t9kMNW00_=uPN1yCEwaOij3MA@mail.gmail.com>
In-Reply-To
<20190116103159.9305-4-pclouds@gmail.com>
Show 15 quoted lines
> --- /dev/null
> +++ b/t/t2405-worktree-submodules.sh
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +
> +test_description='multiple worktrees as superprojects'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'set up submodule source' '
> +       test_create_repo submodsrc &&
> +       (
> +               cd submodsrc &&
> +               test_commit one
> +       ) &&

Just like git itself, test_commit now supports the -C <dir> argument, so you could replace the whole subshell with

    test_commit -C submodsrc one &&
> +       test_commit initial &&
> +       git worktree add -b secondary secondary HEAD &&

Could we have multiple things not named the same? (i.e. have the the branch and worktree be spelled differently) That way it is less confusing and we'd catch errors of swapping these two in the implementation (unlikely, but...)

Show 6 quoted lines
> +       git config extensions.worktreeConfig true
> +'
> +
> +test_expect_success 'add submodules' '
> +       SRC="$(pwd)/submodsrc" &&
> +       git submodule add "$SRC" sub1 &&
you can also use relative paths in submodules:
    git submodule add ./submodsrc sub1 &&
if you want to.
> +       git commit -m sub1 &&
> +       git -C secondary submodule add "$SRC" sub2 &&

Oh never mind, by having the absolute path we add the submodule with the same setting. (When using relative path we'd have to use ../submodusrc here, but would that matter?)

Show 17 quoted lines
> +       git -C secondary commit -m sub2 &&
> +
> +       git config --get-regexp "submodule.*" | sort >actual1 &&
> +       cat >expected1 <<-EOF &&
> +       submodule.sub1.active true
> +       submodule.sub1.url $(pwd)/submodsrc
> +       EOF
> +       test_cmp expected1 actual1 &&
> +       test -d .git/modules/sub1 &&
> +
> +       git -C secondary config --get-regexp "submodule.*" | sort >actual2 &&
> +       cat >expected2 <<-EOF &&
> +       submodule.sub2.active true
> +       submodule.sub2.url $(pwd)/submodsrc
> +       EOF
> +       test_cmp expected2 actual2 &&
> +       test -d .git/worktrees/secondary/modules/sub2

This section is very brittle. For example the way how submodules are active changed not so long ago, and might change again, which seems unrelated to the thing tested here?

Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 7 of 14 in “Support using submodules with worktrees”
  1. 00/10 Support using submodules with worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  2. 01/10 doc: about submodule support with multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  3. Stefan BellerJan 16, 2019
  4. Duy NguyenJan 17, 2019
  5. 02/10 submodule--helper: add missing \nNguyễn Thái Ngọc Duy, Jan 16, 2019
  6. 03/10 submodule add: support multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  7. Stefan BellerJan 16, 2019
  8. 04/10 submodule init: support multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  9. 05/10 submodule update: add tests for multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  10. 06/10 submodule sync: support multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  11. 07/10 submodule deinit: support multiple worktreesNguyễn Thái Ngọc Duy, Jan 16, 2019
  12. 08/10 submodule clone: use repo_config_set()Nguyễn Thái Ngọc Duy, Jan 16, 2019
  13. 09/10 submodule clone: propagate extensions.worktreeConfigNguyễn Thái Ngọc Duy, Jan 16, 2019
  14. 10/10 submodule ensure-core-worktree: write to config.worktreeNguyễn Thái Ngọc Duy, Jan 16, 2019

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.