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

Re: [PATCH] git-new-workdir: Don't fail if the target directory is empty

From
Paul Smith <paul@mad-scientist.net>
Date
Nov 18, 2014, 20:54 UTC
Message-ID
<1416344066.3899.25.camel@mad-scientist.net>
In-Reply-To
<xmqq8uj8wbhl.fsf@gitster.dls.corp.google.com>
On Tue, 2014-11-18 at 12:15 -0800, Junio C Hamano wrote:
Show 6 quoted lines
> Paul Smith <paul@mad-scientist.net> writes:
> 
> > Getting rid of ls/wc was not as simple as I'd hoped,
> 
> I didn't say ls/wc was not portable.  Assuming that a directory for
> which the output from "ls -a" has two entries is empty may be.

Yes, I didn't get your email before I sent the latest patch. Sorry about that.

On Tue, 2014-11-18 at 11:32 -0800, Junio C Hamano wrote:
Show 15 quoted lines
> Even on network mounts from esoteric filesystems and such?  When
> 
>     http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html
> 
> mentions the "-A" option, it says:
> 
>     -A
>         Write out all directory entries, including those whose names
>         begin with a <period> ( '.' ) but excluding the entries dot
>         and dot-dot (if they exist).
> 
> The "if they exist" part suggests, at least to me, that it is valid
> for a POSIX filesystem to lack these two (I suspect that one may be
> able to find a more definitive answer from other parts of the POSIX
> but I didn't bother).

Hm. Well, POSIX clearly reserves "." and ".." to be special and requires that directories containing only those values are considered empty (rmdir(2) says so). The definitions section contains special wording for "dot" and "dot-dot".

Looking at http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html

        Each directory has exactly one parent directory which is
        represented by the name dot-dot in the first directory.

which implies that every directory must have "..". This is in the Rationale, I realize.

There are also various mentions to using "." as a synonym for the current directory.

I can't find a clear statement that both are required and that "ls -a" must show them. I've used a wide range of UNIX-en and filesystems for 30 years or so and never seen one that didn't provide them. It seems like it would break quite a few scripts, at least. Even virtual filesystems like ClearCase's MVFS provide "." and "..".

If you want to allow for this possibility I can do so but it would be a bit crufty. Personally I think it would be overkill but you're the boss: let me know :-).

Cheers!
Previous: Junio C HamanoNext: Junio C Hamano
Message 5 of 9 in “git-new-workdir: Don't fail if the target directory is empty”
  1. git-new-workdir: Don't fail if the target directory is emptyPaul Smith, Nov 15, 2014
  2. Junio C HamanoNov 17, 2014
  3. Paul SmithNov 18, 2014
  4. Junio C HamanoNov 18, 2014
  5. Paul SmithNov 18, 2014
  6. Junio C HamanoNov 18, 2014
  7. Paul SmithNov 18, 2014
  8. Junio C HamanoNov 18, 2014
  9. Paul SmithNov 19, 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.