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

Re: [PATCH 2/2] t4010: match_pathspec_depth() and trailing slash after submodule

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 23, 2014, 21:09 UTC
Message-ID
<xmqqa9emtngr.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1390483326-32258-2-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
> When you do "git diff HEAD submodule/", "submodule" from the index is
> picked out and match_pathspec_depth() in charge of matching it with
> the pathspec "submodule/".
Is "... is called" or something missing at the end of this sentence?
> Unlike tree_entry_interesting(), match_pathspec_depth() has no
> knowledge about entry mode to realize "submodule" is a directory and
> treat the trailing slash specially. And it does not have too, mostly,
s/too/to/, I think.
Show 23 quoted lines
> because the index only contains files, not directories (not until
> submodules come)
>
> I have no solutions for it (no, stripping '/' at pathspec
> preprocessing phase seems like a workaround than a solution). So let's
> mark it. Maybe I or somebody else could revisit it later.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  t/t4010-diff-pathspec.sh | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh
> index 15a4912..b54251a 100755
> --- a/t/t4010-diff-pathspec.sh
> +++ b/t/t4010-diff-pathspec.sh
> @@ -127,4 +127,10 @@ test_expect_success 'diff-tree ignores trailing slash on submodule path' '
>  	test_cmp expect actual
>  '
>  
> +test_expect_failure 'diff-cache ignores trailing slash on submodule path' '
> +	git diff --name-only HEAD^ submod >expect &&
> +	git diff --name-only HEAD^ submod/ >actual &&

I actually doubt that the second line is expecting the right behaviour in the first place. As far as the top-level project is concerned, "submod" is the name it wants, as there is nothing underneath it. Even if asked to recurse infinite levels, the caller shouldn't be feeding paths like "submod/a/b/c" to match_pathspec_depth() in the first place, no?

> +	test_cmp expect actual
> +'
> +
>  test_done
Previous: Nguyễn Thái Ngọc DuyNext: Jens Lehmann
Message 6 of 24 in “problematic git log submodule-dir/”
  1. Paweł SikoraJan 20, 2014
  2. Jens LehmannJan 22, 2014
  3. Duy NguyenJan 22, 2014
  4. 1/2 tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()Nguyễn Thái Ngọc Duy, Jan 23, 2014
  5. 2/2 t4010: match_pathspec_depth() and trailing slash after submoduleNguyễn Thái Ngọc Duy, Jan 23, 2014
  6. Junio C HamanoJan 23, 2014
  7. Jens LehmannJan 23, 2014
  8. Junio C HamanoJan 23, 2014
  9. Duy NguyenJan 24, 2014
  10. 0/9 About the trailing slashesNguyễn Thái Ngọc Duy, Jan 24, 2014
  11. 1/9 Convert some match_pathspec_depth() to ce_path_match()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  12. 2/9 Convert some match_pathspec_depth() to dir_path_match()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  13. 3/9 Rename match_pathspec_depth() to match_pathspec()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  14. 4/9 dir.c: prepare match_pathspec_item for taking more flagsNguyễn Thái Ngọc Duy, Jan 24, 2014
  15. 5/9 match_pathspec: match pathspec "foo/" against directory "foo"Nguyễn Thái Ngọc Duy, Jan 24, 2014
  16. 6/9 Pass directory indicator to match_pathspec_item()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  17. Eric SunshineJan 24, 2014
  18. Duy NguyenJan 25, 2014
  19. 7/9 clean: replace match_pathspec() with dir_path_match()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  20. 8/9 clean: use cache_name_is_other()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  21. 9/9 tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()Nguyễn Thái Ngọc Duy, Jan 24, 2014
  22. Junio C HamanoJan 24, 2014
  23. Duy NguyenJan 25, 2014
  24. Junio C HamanoJan 27, 2014

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.