git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* does "git clean" deliberately ignore "core.excludesFile"?
@ 2019-02-23 15:11 Robert P. J. Day
  2019-02-23 15:28 ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Robert P. J. Day @ 2019-02-23 15:11 UTC (permalink / raw)
  To: Git Mailing list

[-- Attachment #1: Type: text/plain, Size: 1195 bytes --]


  not sure why i never noticed this before, but the "-x" option for
"git clean" reads:

 -x
     Don’t use the standard ignore rules read from .gitignore
     (per directory) and $GIT_DIR/info/exclude, but do still use
     the ignore rules given with -e options. This allows
     removing all untracked files, including build products.
     This can be used (possibly in conjunction with git reset)
     to create a pristine working directory to test a clean
     build.

  but i see no mention of whether the file specified by
core.excludesFile is taken into account, and perusing the source code
doesn't seem to show that command checking that config option.

  am i misreading something? and if not, is there a reason git clean
does not consult core.excludesFile?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-23 15:11 does "git clean" deliberately ignore "core.excludesFile"? Robert P. J. Day
@ 2019-02-23 15:28 ` Junio C Hamano
  2019-02-23 18:06   ` Johannes Schindelin
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2019-02-23 15:28 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Git Mailing list

"Robert P. J. Day" <rpjday@crashcourse.ca> writes:

>   am i misreading something? and if not, is there a reason git clean
> does not consult core.excludesFile?

Can you ask "git log" and "git blame" whch of  core.excludesFile and
"clean -x" features came earlier and by how big a difference?

Most likely this is because the exclude came much much later, and
either we forgot to teach the implementation of clean to pay
attention to it or (much more likely) the implementaiton is fine but
we did not update the doc, which was trying to overly be exhaustive,
doing no good (if the original just stopped at saying "... the
standard ignore rules read from the usual places", we won't be
having this discussion).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-23 15:28 ` Junio C Hamano
@ 2019-02-23 18:06   ` Johannes Schindelin
  2019-02-23 18:19     ` Johannes Schindelin
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin @ 2019-02-23 18:06 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Robert P. J. Day, Git Mailing list

Hi,

On Sat, 23 Feb 2019, Junio C Hamano wrote:

> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> 
> >   am i misreading something? and if not, is there a reason git clean
> > does not consult core.excludesFile?
> 
> Can you ask "git log" and "git blame" whch of  core.excludesFile and
> "clean -x" features came earlier and by how big a difference?

Or maybe we can have a look why the `core.excludesfile` regression test
case in t7300 does not catch this?

https://github.com/git/git/blob/v2.21.0-rc2/t/t7300-clean.sh#L408-L417

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-23 18:06   ` Johannes Schindelin
@ 2019-02-23 18:19     ` Johannes Schindelin
  2019-02-23 18:32       ` Robert P. J. Day
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin @ 2019-02-23 18:19 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Robert P. J. Day, Git Mailing list

Hi,

On Sat, 23 Feb 2019, Johannes Schindelin wrote:

> On Sat, 23 Feb 2019, Junio C Hamano wrote:
> 
> > "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> > 
> > >   am i misreading something? and if not, is there a reason git clean
> > > does not consult core.excludesFile?
> > 
> > Can you ask "git log" and "git blame" whch of  core.excludesFile and
> > "clean -x" features came earlier and by how big a difference?
> 
> Or maybe we can have a look why the `core.excludesfile` regression test
> case in t7300 does not catch this?
> 
> https://github.com/git/git/blob/v2.21.0-rc2/t/t7300-clean.sh#L408-L417

I actually doubt that `git clean` ignores `core.excludesFile`: in
https://github.com/git/git/blob/v2.21.0-rc2/config.c#L1297-L1298,
`git_default_core_config()` (which is called via the `git_clean_config()`
-> `git_color_default_config()` -> `git_default_config()` chain from
`cmd_clean()`) does interpret `core.excludesFile`:

	if (!strcmp(var, "core.excludesfile"))
		return git_config_pathname(&excludes_file, var, value);

Then, `cmd_clean()` goes on to parse the options, setting the `ignored`
variable upon `-x` and then doing
[this](https://github.com/git/git/blob/v2.21.0-rc2/builtin/clean.c#L957-L958):

	if (!ignored)
		setup_standard_excludes(&dir);

This function specifically looks at `excludes_file` in
https://github.com/git/git/blob/v2.21.0-rc2/dir.c#L2481-L2483:

	if (excludes_file && !access_or_warn(excludes_file, R_OK, 0))
		add_excludes_from_file_1(dir, excludes_file,
					 dir->untracked ? &dir->ss_excludes_file : NULL);

So I am quite puzzled by the claim that `git clean` might not consult
`core.excludesFile`.

Robert, care to come up with an example demonstrating where it does not?

Ciao,
Johannes

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-23 18:19     ` Johannes Schindelin
@ 2019-02-23 18:32       ` Robert P. J. Day
  2019-02-24  5:30         ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Robert P. J. Day @ 2019-02-23 18:32 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Junio C Hamano, Git Mailing list

[-- Attachment #1: Type: text/plain, Size: 2798 bytes --]

On Sat, 23 Feb 2019, Johannes Schindelin wrote:

> Hi,
>
> On Sat, 23 Feb 2019, Johannes Schindelin wrote:
>
> > On Sat, 23 Feb 2019, Junio C Hamano wrote:
> >
> > > "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> > >
> > > >   am i misreading something? and if not, is there a reason git clean
> > > > does not consult core.excludesFile?
> > >
> > > Can you ask "git log" and "git blame" whch of  core.excludesFile and
> > > "clean -x" features came earlier and by how big a difference?
> >
> > Or maybe we can have a look why the `core.excludesfile` regression test
> > case in t7300 does not catch this?
> >
> > https://github.com/git/git/blob/v2.21.0-rc2/t/t7300-clean.sh#L408-L417
>
> I actually doubt that `git clean` ignores `core.excludesFile`: in
> https://github.com/git/git/blob/v2.21.0-rc2/config.c#L1297-L1298,
> `git_default_core_config()` (which is called via the `git_clean_config()`
> -> `git_color_default_config()` -> `git_default_config()` chain from
> `cmd_clean()`) does interpret `core.excludesFile`:
>
> 	if (!strcmp(var, "core.excludesfile"))
> 		return git_config_pathname(&excludes_file, var, value);
>
> Then, `cmd_clean()` goes on to parse the options, setting the `ignored`
> variable upon `-x` and then doing
> [this](https://github.com/git/git/blob/v2.21.0-rc2/builtin/clean.c#L957-L958):
>
> 	if (!ignored)
> 		setup_standard_excludes(&dir);
>
> This function specifically looks at `excludes_file` in
> https://github.com/git/git/blob/v2.21.0-rc2/dir.c#L2481-L2483:
>
> 	if (excludes_file && !access_or_warn(excludes_file, R_OK, 0))
> 		add_excludes_from_file_1(dir, excludes_file,
> 					 dir->untracked ? &dir->ss_excludes_file : NULL);
>
> So I am quite puzzled by the claim that `git clean` might not consult
> `core.excludesFile`.
>
> Robert, care to come up with an example demonstrating where it does not?

  sorry i wasn't clear, all i was pointing out was that "man
git-clean" *explicitly* mentioned two locations related to cleaning:

  -x
        Don’t use the standard ignore rules read from .gitignore
        (per directory) and $GIT_DIR/info/exclude, ...

without additionally *explicitly* mentioning core.excludesFile. if the
man page simply said something like, "using the standard ignore
processing" and left it at that, it would be fine, but to list two of
the locations without the third is potentially confusing.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-23 18:32       ` Robert P. J. Day
@ 2019-02-24  5:30         ` Junio C Hamano
  2019-02-24 14:15           ` Johannes Schindelin
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2019-02-24  5:30 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Johannes Schindelin, Git Mailing list

"Robert P. J. Day" <rpjday@crashcourse.ca> writes:

> On Sat, 23 Feb 2019, Johannes Schindelin wrote:
>
>> Robert, care to come up with an example demonstrating where it does not?
>
>   sorry i wasn't clear, all i was pointing out was that "man
> git-clean" *explicitly* mentioned two locations related to cleaning:
> ...
> without additionally *explicitly* mentioning core.excludesFile.

OK, so together with the homework Dscho did for you and what I wrote
earlier, I think you have enough information to answer the question
yourself.

That is, the code does *not* ignore, and the doc was trying to be
(overly) exhaustive but because it predates core.excludesFile, after
the introduction of that configuration, it no longer is exhaustigve
and has become stale.

Which would leave a small, easy and low-hanging fruit, I guess ;-).

Thanks.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: does "git clean" deliberately ignore "core.excludesFile"?
  2019-02-24  5:30         ` Junio C Hamano
@ 2019-02-24 14:15           ` Johannes Schindelin
  0 siblings, 0 replies; 7+ messages in thread
From: Johannes Schindelin @ 2019-02-24 14:15 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Robert P. J. Day, Git Mailing list

Hi,

On Sat, 23 Feb 2019, Junio C Hamano wrote:

> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> 
> > On Sat, 23 Feb 2019, Johannes Schindelin wrote:
> >
> >> Robert, care to come up with an example demonstrating where it does not?
> >
> >   sorry i wasn't clear, all i was pointing out was that "man
> > git-clean" *explicitly* mentioned two locations related to cleaning:
> > ...
> > without additionally *explicitly* mentioning core.excludesFile.
> 
> OK, so together with the homework Dscho did for you and what I wrote
> earlier, I think you have enough information to answer the question
> yourself.
> 
> That is, the code does *not* ignore, and the doc was trying to be
> (overly) exhaustive but because it predates core.excludesFile, after
> the introduction of that configuration, it no longer is exhaustigve
> and has become stale.
> 
> Which would leave a small, easy and low-hanging fruit, I guess ;-).

#leftoverbits

;-)

Thanks,
Dscho

> Thanks.
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-02-24 14:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-23 15:11 does "git clean" deliberately ignore "core.excludesFile"? Robert P. J. Day
2019-02-23 15:28 ` Junio C Hamano
2019-02-23 18:06   ` Johannes Schindelin
2019-02-23 18:19     ` Johannes Schindelin
2019-02-23 18:32       ` Robert P. J. Day
2019-02-24  5:30         ` Junio C Hamano
2019-02-24 14:15           ` Johannes Schindelin

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).