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

Re: [PATCH] add: do not rely on dtype being NULL behavior

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 11, 2010, 17:47 UTC
Message-ID
<7voc9vhhvr.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1289480602-10545-1-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
Show 48 quoted lines
> Commit c84de70 (excluded_1(): support exclude files in index -
> 2009-08-20) added support for excluded() where dtype can be NULL. It
> was designed specifically for index matching because there was no
> other way to extract dtype information from index. It did not support
> wildcard matching (for example, "a*/" pattern would fail to match).
>
> The code was probably misread when commit 108da0d (git add: Add the
> "--ignore-missing" option for the dry run - 2010-07-10) was made
> because DT_UNKNOWN happens to be zero (NULL) too.
>
> Do not pass DT_UNKNOWN/NULL to excluded(), instead pass a pointer to a
> variable that contains DT_UNKNOWN. The real dtype will be extracted
> from worktree by excluded(), as expected.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
>  I do not add tests for the "a*/" failure above because I plan
>  to fix it. Expect c84de70 will be reverted "soon" (in my timescale)
>  when sparse checkout can pass real dtype.
>
>  builtin/add.c |    3 ++-
>  dir.c         |    2 +-
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/add.c b/builtin/add.c
> index 56a4e0a..1a4672d 100644
> --- a/builtin/add.c
> +++ b/builtin/add.c
> @@ -446,7 +446,8 @@ int cmd_add(int argc, const char **argv, const char *prefix)
>  			if (!seen[i] && pathspec[i][0]
>  			    && !file_exists(pathspec[i])) {
>  				if (ignore_missing) {
> -					if (excluded(&dir, pathspec[i], DT_UNKNOWN))
> +					int dtype = DT_UNKNOWN;
> +					if (excluded(&dir, pathspec[i], &dtype))
>  						dir_add_ignored(&dir, pathspec[i], strlen(pathspec[i]));
>  				} else
>  					die("pathspec '%s' did not match any files",
> diff --git a/dir.c b/dir.c
> index b2dfb69..c4bed66 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -359,7 +359,7 @@ int excluded_from_list(const char *pathname,
>  			int to_exclude = x->to_exclude;
>  
>  			if (x->flags & EXC_FLAG_MUSTBEDIR) {
> -				if (!dtype) {
> +				if (dtype != NULL) {
Hmm, are you sure about this part?
Show 5 quoted lines
>  					if (!prefixcmp(pathname, exclude) &&
>  					    pathname[x->patternlen] == '/')
>  						return to_exclude;
> -- 
> 1.7.3.2.210.g045198
Previous: Nguyễn Thái Ngọc DuyNext: Nguyen Thai Ngoc Duy
Message 2 of 3 in “add: do not rely on dtype being NULL behavior”
  1. add: do not rely on dtype being NULL behaviorNguyễn Thái Ngọc Duy, Nov 11, 2010
  2. Junio C HamanoNov 11, 2010
  3. Nguyen Thai Ngoc DuyNov 12, 2010

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.