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

Re: clean bug on ignored subdirectories with no tracked files?

From
Jay Soffian <jaysoffian@gmail.com>
Date
Nov 21, 2011, 18:51 UTC
Message-ID
<CAG+J_DwKeWntmi22vHS6CRud6Lo0P_+D5u5ih2Bbc50ekYji5w@mail.gmail.com>
In-Reply-To
<7vy5vbj4rb.fsf@alter.siamese.dyndns.org>
On Sat, Nov 19, 2011 at 2:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> Jay Soffian <jaysoffian@gmail.com> writes:
>
>> git init test_repo &&
>> cd test_repo &&
>> mkdir -p foo/bar &&
>> echo baz > foo/bar/baz &&
>> echo /foo/bar > .gitignore &&
>> git add .gitignore &&
>> git clean -n -d
>>
>> Initialized empty Git repository in .../test_repo/.git/
>> Would remove foo/
>>
>> Seems surprising.
>
> You said "everythingthing in foo/bar is uninteresting and can be cleaned",
> you have one untracked file in "foo/bar" hierarchy, and you have nothing
> else in "foo/" hierarchy.

Just because it is uninteresting to git does not mean that it isn't precious. In this case the ignored files are from svn and checked out via another tool (gclient).

> Removing the uninteresting cruft as your .gitignore instructs Git makes
> the entire "foo/" hierarchy devoid of any contents. I would *expect* Git
> to clean "foo" in this case.

But .gitignore is not for indicating "this is cruft", it is for indicating "this is not under git's purview." You must admit that git clean's behavior above, if not surprising to you, is at least inconsistent with:

$ git init test_repo && cd test_repo && mkdir foo && touch foo/bar && echo /foo > .gitignore && git add .gitignore && git clean -n -d

which does protect foo (and its contents) from being cleaned.

git clean specifically has an option for "remove only the stuff which is ignored" which implies that it should not be removing ignored stuff w/o that option.

Show 6 quoted lines
> I've seen some "surprising" behaviour in "git clean" (which I do not use
> myself, I do not consider part of "my code", and I am not surprised if it
> has many bugs), but I fail to see what is surprising in your transcript.
>
> It would be a different issue if you had ">foo/other" before your "clean".
> Then "foo/" has "foo/clean" that is not declared to be uninteresting.

Huh? clean is designed to remove untracked unignored files, so I'd expect it to remove foo/other in that case. And what is this foo/clean to which you refer?

j.
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 7 in “clean bug on ignored subdirectories with no tracked files?”
  1. Jay SoffianNov 19, 2011
  2. Junio C HamanoNov 19, 2011
  3. Jay SoffianNov 21, 2011
  4. Junio C HamanoNov 21, 2011
  5. Junio C HamanoNov 21, 2011
  6. Jay SoffianNov 21, 2011
  7. Phil HordDec 1, 2011

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.