patcht1900: cover linked worktrees and separate git dirs
2 messages between Mar 18, 2026 and Mar 21, 2026, from Jialong Wang, Tian Yuchen.
Plain Markdown or JSON for tools and agents. Diffs are folded; open one to read it.
Add repo-info coverage for repositories accessed through a linked\nworktree and through a worktree created with --separate-git-dir.\n\nThese layouts are already supported by the current implementation, but\nare not exercised by t1900-repo-info.sh yet. Cover both the lines and\nnul output formats for layout.bare and layout.shallow in these cases.
Signed-off-by: Jialong Wang <jerrywang183@yahoo.com>
---
t/t1900-repo-info.sh | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
Show changes to t/t1900-repo-info.sh +39 −0
diff --git a/t/t1900-repo-info.sh b/t/t1900-repo-info.sh
index a9eb07abe8..f85ed232c2 100755
--- a/t/t1900-repo-info.sh
+++ b/t/t1900-repo-info.sh
@@ -69,6 +69,45 @@ test_repo_info 'object.format = sha1 is retrieved correctly' \
test_repo_info 'object.format = sha256 is retrieved correctly' \
'git init --object-format=sha256' 'sha256' 'object.format' 'sha256'
+test_expect_success 'setup linked worktree' '
+ git init main &&
+ git -C main worktree add ../linked
+'
+
+test_expect_success 'linked worktree layout values are retrieved correctly in lines format' '
+ cat >expect <<-\EOF &&
+ layout.bare=false
+ layout.shallow=false
+ EOF
+ git -C linked repo info layout.bare layout.shallow >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'linked worktree layout values are retrieved correctly in nul format' '
+ printf "layout.bare\nfalse\0layout.shallow\nfalse\0" >expect &&
+ git -C linked repo info --format=nul layout.bare layout.shallow >actual &&
+ test_cmp_bin expect actual
+'
+
+test_expect_success 'setup repository created with --separate-git-dir' '
+ git init --separate-git-dir=separate.git separate-worktree
+'
+
+test_expect_success 'separate-git-dir layout values are retrieved correctly in lines format' '
+ cat >expect <<-\EOF &&
+ layout.bare=false
+ layout.shallow=false
+ EOF
+ git -C separate-worktree repo info layout.bare layout.shallow >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'separate-git-dir layout values are retrieved correctly in nul format' '
+ printf "layout.bare\nfalse\0layout.shallow\nfalse\0" >expect &&
+ git -C separate-worktree repo info --format=nul layout.bare layout.shallow >actual &&
+ test_cmp_bin expect actual
+'
+
test_expect_success 'values returned in order requested' '
cat >expect <<-\EOF &&
layout.bare=false
--
2.51.0
Re: [PATCH] t1900: cover linked worktrees and separate git dirs
Hi Jialong,
Thanks for the patch.
On 3/19/26 04:35, Jialong Wang wrote:
> Add repo-info coverage for repositories accessed through a linked\nworktree and through a worktree created with --separate-git-dir.\n\nThese layouts are already supported by the current implementation, but\nare not exercised by t1900-repo-info.sh yet. Cover both the lines and\nnul output formats for layout.bare and layout.shallow in these cases.
>
> Signed-off-by: Jialong Wang <jerrywang183@yahoo.com>
> ---
I noticed that line breaks in the submitted data are escaped as \n characters. Even if you send the patch using a different tool, you should still check the mailing list to see how it looks, right? ;)
Show 53 quoted lines
> t/t1900-repo-info.sh | 39 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
>
> diff --git a/t/t1900-repo-info.sh b/t/t1900-repo-info.sh
> index a9eb07abe8..f85ed232c2 100755
> --- a/t/t1900-repo-info.sh
> +++ b/t/t1900-repo-info.sh
> @@ -69,6 +69,45 @@ test_repo_info 'object.format = sha1 is retrieved correctly' \
> test_repo_info 'object.format = sha256 is retrieved correctly' \
> 'git init --object-format=sha256' 'sha256' 'object.format' 'sha256'
>
> +test_expect_success 'setup linked worktree' '
> + git init main &&
> + git -C main worktree add ../linked
> +'
> +
> +test_expect_success 'linked worktree layout values are retrieved correctly in lines format' '
> + cat >expect <<-\EOF &&
> + layout.bare=false
> + layout.shallow=false
> + EOF
> + git -C linked repo info layout.bare layout.shallow >actual &&
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'linked worktree layout values are retrieved correctly in nul format' '
> + printf "layout.bare\nfalse\0layout.shallow\nfalse\0" >expect &&
> + git -C linked repo info --format=nul layout.bare layout.shallow >actual &&
> + test_cmp_bin expect actual
> +'
> +
> +test_expect_success 'setup repository created with --separate-git-dir' '
> + git init --separate-git-dir=separate.git separate-worktree
> +'
> +
> +test_expect_success 'separate-git-dir layout values are retrieved correctly in lines format' '
> + cat >expect <<-\EOF &&
> + layout.bare=false
> + layout.shallow=false
> + EOF
> + git -C separate-worktree repo info layout.bare layout.shallow >actual &&
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'separate-git-dir layout values are retrieved correctly in nul format' '
> + printf "layout.bare\nfalse\0layout.shallow\nfalse\0" >expect &&
> + git -C separate-worktree repo info --format=nul layout.bare layout.shallow >actual &&
> + test_cmp_bin expect actual
> +'
> +
> test_expect_success 'values returned in order requested' '
> cat >expect <<-\EOF &&
> layout.bare=false
The patch itself looks fine. The 'git repo info' command seems to be a relatively new one, so I think adding a test script is necessary...
...except one thing to mention:
> +test_expect_success 'setup linked worktree' '
> + git init main &&
> + git -C main worktree add ../linked
Since the main repo here is an empty, can a linked worktree be created? Here, HEAD does not point to a valid object, and there is no commit available checkout. I think it would be better to create a commit using test_commit first.
Regards,
Yuchen