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

Re: [PATCH 2/2] Use is_pseudo_dir_name everywhere

From
APAlexander Potashev <aspotashev@gmail.com>
Date
Jan 9, 2009, 10:24 UTC
Message-ID
<20090109102407.GA4089@myhost>
In-Reply-To
<7vy6xk280e.fsf@gitster.siamese.dyndns.org>
On 00:33 Fri 09 Jan     , Junio C Hamano wrote:
Show 19 quoted lines
> Johannes Sixt <j.sixt@viscovery.net> writes:
> 
> > Johannes Sixt schrieb:
> >> Alexander Potashev schrieb:
> >>> -		if ((ent->d_name[0] == '.') &&
> >>> -		    (ent->d_name[1] == 0 ||
> >>> -		     ((ent->d_name[1] == '.') && (ent->d_name[2] == 0))))
> >>> +		if (is_pseudo_dir_name(ent->d_name))
> >> 
> >> Nit-pick: When I read the resulting code, then I will have to look up that
> >>   is_pseudo_dir_name() indeed only checks for "." and "..". But if it were
> >> named is_dot_or_dotdot(), then I would have to do that.
> >
> > ... then I would *not* have to do that, of course.
> 
> I think the unstated motivation of this choice of the name is to keep the
> door open to include lost+found and friends to the repertoire, and perhaps
> to have an isolated place for customization for non-POSIX platforms and
> for local conventions.  It is more like is_uninteresting_dirent_name().

I didn't think over the support of 'lost+found'. But the name like is_uninteresting_dirent_name is more flexible, indeed. I prefer a bit shorter name, 'is_dummy_dirent_name'.

But if you're going to support 'lost+found's, remember that a Git
repository might have its own 'lost+found' directory. It's a bit crazy,
but it's possible:
	---
	 lost+found/file |    1 +
	 1 files changed, 1 insertions(+), 0 deletions(-)
	 create mode 100644 lost+found/file
	diff --git a/lost+found/file b/lost+found/file
	new file mode 100644
	index 0000000..190a180
	--- /dev/null
	+++ b/lost+found/file
	@@ -0,0 +1 @@
	+123
	-- 

Git shouldn't allow to clone at least repositories that have lost+found directory into a directory with already existing lost+found (neither it's a ordinary directory created using 'mkdir' nor it's an ext2's property)

We should probably forbid cloning to a directory with lost+found, because a 'lost+found' may appear after pulling from somebody and the user won't be able to resolve this anyhow.

Show 7 quoted lines
> 
> As long as this function is used only to detect and skip "uninteresting"
> dirent, I think that is not a bad direction.
> 
> On the other hand, I am a bit worried about is_empty_dir() abused outside
> its intended purpose to say "this directory does not have anything
> interesting".  E.g. "Oh, it's empty so we can nuke it":

I propose to rename it (if it's really necessary) to is_clean_dir, which means "There's no old crap here, we can safely clone".

Show 6 quoted lines
> 
> 	if (is_empty_dir(dir))
>         	rmdir(dir);
> 
> even though the current callers do not do something crazy like this (the
> usual order we do things is rmdir() and then check for errors).

I think, it's rather early to send [PATCHES v2] (with updated function names), will wait for your comments.

Previous: Junio C HamanoNext: Junio C Hamano
Message 7 of 8 in “Allow cloning to an existing empty directory”
  1. 0/2 Allow cloning to an existing empty directoryAlexander Potashev, Jan 8, 2009
  2. 1/2 Allow cloning to an existing empty directoryAlexander Potashev, Jan 8, 2009
  3. 2/2 Use is_pseudo_dir_name everywhereAlexander Potashev, Jan 8, 2009
  4. Johannes SixtJan 9, 2009
  5. Johannes SixtJan 9, 2009
  6. Junio C HamanoJan 9, 2009
  7. Alexander PotashevJan 9, 2009
  8. Junio C HamanoJan 10, 2009

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.