git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: david@lang.hm
To: David Kastrup <dak@gnu.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>, git@vger.kernel.org
Subject: Re: [RFC PATCH] Re: Empty directories...
Date: Sat, 21 Jul 2007 23:38:41 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0707212332530.6350@asgard.lang.hm> (raw)
In-Reply-To: <85abtpoydg.fsf@lola.goethe.zz>

On Sun, 22 Jul 2007, David Kastrup wrote:

> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
>> On Sun, 22 Jul 2007, David Kastrup wrote:
>>>
>>> "." _is_ visible and detectable in every tree.
>>
>> I'm going to add you to my "clueless" filter, because it's not worth
>> my time to answr you any more.
>
> Too bad I can't do the same.
>
>> I told you. Several times. That "." is pointless exactly because
>> it's in _every_ tree, and as such is no longer "content".
>
> "." is in every _non-empty_ directory tree.  But we are talking about
> permitting _empty_ trees in the repository.  And for an empty tree in
> the repository, "." may or may not be in the corresponding work
> directory tree, depending on whether the directory exists or not.  So
> when we are talking about a repository tree _becoming_ empty, we need
> the information whether or whether not we should remove it upon
> becoming empty.  _That_ is the information content of "." being or not
> being considered part of the trackable material.  And the information
> is no longer available at the time the repository tree becomes empty
> _unless_ we already store it there when the tree is still populated.

David, the point where you and Linus are talking past each other is that 
Linus is assuming that you only want to track some specific directories, 
and for that tracking "." doesn't work becouse it's in every directory

you apparently consider every directory equal and therefor the fact that 
"." exists in every directory doesn't bother you becouse you want to track 
every directory.

what you are not hearing is that while Linus and the other git developers 
can see reasons to track directories sometimes, they definantly don't 
agree that you want to track directories all the time.

sometimes the fact that a directory exists is significant, most of the 
time it's not. and the difference between what is and what isn't 
significant isn't a per-repository or per-project thing, it's a 
per-directory thing.

in one repository you will have some directories that only exist becouse 
files are in them, and you may have some directories that exist becouse 
you explicitly want them to exist.

both types have the "." file in them (or appear to, some OS's/filesystems 
don't actually have a "." on disk, they add it when needed when reporting 
to userspace), so git has no way to tell which ones you explicitly want 
tracked.

creating .gitignore in the directories that you want tracked lets the 
other directories not be trackes.

David Lang

>> It's not something that the user can care about, because it has no
>> meaning. There's no point in tracking it, because even if we do
>> *not* track it, it's there, and we cannot do anything about it.
>
> Ok, here we go _again_.  Test case 1:
>
> mkdir a
> touch a/b
> git-add a/b
> git-commit -m x
> git-rm a/b
> git-commit -m x
>
> Now we want to have the directory a _removed_.
>
> Test case 2:
>
> mkdir a
> touch a/b
> git-add a
> git-commit -m x
> git-rm a/b
> git-commit -m x
>
> Now we want to have the directory a _retained_.
>
> After the first commit in _both_ test cases, the only file in the
> trees / and /a is a/b.  The working directory state is _identical_ at
> this point, and we do identical commands afterwards.
>
> The end result is not identical, so there must be some information
> different in the repository after the first commit.  This information
> _can't_ be encoded in a remaining empty tree, because both the trees /
> and /a are _non_-empty yet.
>
> So we _must_ encode the evaporate-or-not-when-empty information
> _otherwise_ into the repository.  And we do that by _not_ having
> /a/. in the set of tracked files in test case 1, and by _having_ it in
> the set of tracked files in test case 2.
>
>> That was the whole difference between "." and ".gitignore", and I
>> explicitly pointed out that that was the difference (and the _only_
>> one), and why it mattered.
>
> You are underestimating the power of ".gitignore": while it is true
> that its _physical_ presence will reliably keep git from removing the
> directory, its physical presence is not _actually_ required.
>
> It is sufficient that git _believes_ in its continuing physical
> existence.  And if we tell it "it is still there" whenever it takes a
> look, then git will keep the record of .gitignore in its tree, and
> consequently won't remove the tree and not try deleting the directory.
> However, once we explicitly tell it "remove the record of .gitignore
> from the repository", it will do so, and in the course of doing so
> remove the directory in the work directory together with the tree in
> the repository.
>
> From a user interface and logical standpoint, adding or not adding "."
> to the tracked content is a perfectly consistent and convenient way of
> having the directory kept around or not.
>
> From the viewpoint of the internal data structures, I'll likely go
> with tampering with (pseudo-)permissions.
>
>> And you didn't listen. And now you claim that I don't read your
>> emails. I do. They just don't make any sense.
>>
>> Consider this discussion ended. I simply don't care any more.
>
> It is painfully clear that I could invest a few weeks of time in
> coding better than in explaining stuff.  And I guess that's what I'll
> have to do.  And afterwards it will be your job to wrack your head
> about why something does all the right things for the wrong reasons
> and come up with a different explanation how and why the code works.
>
>

  reply	other threads:[~2007-07-22  6:39 UTC|newest]

Thread overview: 137+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-18  0:13 Empty directories David Kastrup
2007-07-18  0:35 ` Johannes Schindelin
2007-07-18  6:07   ` David Kastrup
2007-07-18 10:26     ` Johannes Schindelin
     [not found]       ` <86tzs2m1h7.fsf@lola.quinscape.zz>
2007-07-18 11:24         ` Johannes Schindelin
2007-07-18 11:40           ` Matthieu Moy
2007-07-18 12:12             ` David Kastrup
2007-07-18 16:23     ` Linus Torvalds
2007-07-18 16:33       ` Linus Torvalds
2007-07-18 17:38         ` David Kastrup
2007-07-18 18:05           ` Linus Torvalds
2007-07-18 16:39       ` Matthieu Moy
2007-07-18 17:06         ` Linus Torvalds
2007-07-18 21:37           ` David Kastrup
2007-07-18 21:45             ` Linus Torvalds
2007-07-18 23:13               ` David Kastrup
2007-07-18 23:16               ` [RFC PATCH] " Linus Torvalds
2007-07-18 23:40                 ` Linus Torvalds
2007-07-18 23:42                 ` David Kastrup
2007-07-19  0:22                   ` Linus Torvalds
2007-07-19  5:28                     ` Junio C Hamano
2007-07-19  5:38                       ` Shawn O. Pearce
2007-07-19  6:08                         ` David Kastrup
2007-07-19  7:10                           ` Geoff Russell
2007-07-19  6:09                         ` Shawn O. Pearce
2007-07-19  8:13                           ` Matthieu Moy
2007-07-19 10:51                             ` Tomash Brechko
2007-07-19 11:31                               ` David Kastrup
2007-07-19 12:32                                 ` Tomash Brechko
2007-07-19 12:46                                   ` David Kastrup
2007-07-23 20:18                                     ` Nix
2007-07-23 20:49                                       ` David Kastrup
2007-07-23 21:49                                         ` Nix
2007-07-23 22:05                                           ` Nix
2007-07-23 22:52                                             ` Jakub Narebski
2007-07-25 22:43                                               ` Nix
2007-07-23 22:16                                           ` David Kastrup
2007-07-23 22:31                                             ` Linus Torvalds
2007-07-23 23:32                                               ` Nix
2007-07-23 23:57                                                 ` Linus Torvalds
     [not found]                                               ` <86ps2ithyl.fsf@lola.quinscape.zz>
2007-07-24  6:56                                                 ` Nix
2007-07-19 12:38                                 ` David Kastrup
2007-07-19 13:21                                   ` David Kastrup
2007-07-19 12:16                               ` Johannes Schindelin
2007-07-19 12:24                                 ` David Kastrup
2007-07-19 14:44                                   ` Brian Gernhardt
2007-07-19 15:43                                     ` Johannes Schindelin
2007-07-19 16:06                                       ` Brian Gernhardt
2007-07-19 16:17                                         ` Johannes Schindelin
2007-07-19 16:28                                           ` David Kastrup
2007-07-19 16:34                                           ` Brian Gernhardt
2007-07-19 17:30                                             ` Johannes Schindelin
     [not found]                                             ` <Pine.LNX.4.64.070719 1829530.14781@racer.site>
2007-07-19 17:47                                               ` David Kastrup
2007-07-19 16:17                                       ` Matthieu Moy
2007-07-19 16:21                                       ` David Kastrup
     [not found]                         ` <9436820E-53D1-425D-922E-D4C76578E40A@silverinsanity.com>
     [not found]                           ` <863azk78yp.fsf@lola.quinscape.zz>
2007-07-19 15:08                             ` Brian Gernhardt
2007-07-19 15:27                               ` David Kastrup
2007-07-19 15:50                                 ` Brian Gernhardt
2007-07-20  0:01                               ` Junio C Hamano
2007-07-20  0:15                                 ` Linus Torvalds
2007-07-20  0:33                                   ` Linus Torvalds
2007-07-20  2:24                                     ` Junio C Hamano
2007-07-20  2:31                                       ` Linus Torvalds
2007-07-20  5:55                                         ` David Kastrup
2007-07-20  5:58                                       ` David Kastrup
2007-07-20 15:31                                         ` Linus Torvalds
2007-07-20  5:35                                     ` David Kastrup
2007-07-20  9:27                                       ` Simon 'corecode' Schubert
2007-07-20 10:11                                         ` David Kastrup
2007-07-20 10:34                                         ` Junio C Hamano
2007-07-20 13:23                                           ` David Kastrup
2007-07-20 19:24                                           ` Linus Torvalds
2007-07-20 21:02                                             ` Johan Herland
2007-07-20 21:48                                               ` Linus Torvalds
2007-07-20 22:36                                                 ` Julian Phillips
2007-07-21  0:18                                                   ` Linus Torvalds
2007-07-21  1:23                                                     ` David Kastrup
2007-07-21  3:54                                                       ` David Kastrup
     [not found]                                     ` <7vir8f24o2.fsf@assigned -by-dhcp.cox.net>
2007-07-20  5:53                                       ` David Kastrup
2007-07-20 10:19                                   ` Olivier Galibert
2007-07-19  5:59                       ` David Kastrup
2007-07-19  9:54                         ` David Kastrup
     [not found]                   ` <?= =?ISO-8859-1?Q?alpine.LFD.0.999?= =?ISO-8859-1?Q?.070718=041710271.?= =?ISO-8859-1?Q?27353@woody.linu?= =?ISO-8859-1?Q?x-foundation.org?= =?ISO-8859-1?Q?>
2007-07-22 21:08                     ` David Kastrup
2007-07-21  4:29                 ` David Kastrup
2007-07-21  4:51                   ` Linus Torvalds
2007-07-21  5:08                     ` Linus Torvalds
2007-07-21  5:28                       ` David Kastrup
2007-07-21 15:53                         ` Linus Torvalds
2007-07-21 17:38                           ` David Kastrup
2007-07-21 17:52                             ` Simon 'corecode' Schubert
2007-07-21 18:08                               ` David Kastrup
2007-07-21 23:50                             ` Linus Torvalds
2007-07-22  0:18                               ` David Kastrup
2007-07-22  0:37                                 ` Linus Torvalds
2007-07-22  1:05                                   ` David Kastrup
2007-07-22  1:41                                     ` Linus Torvalds
2007-07-22  2:39                                       ` David Kastrup
2007-07-22  3:43                                         ` Linus Torvalds
2007-07-22  4:28                                           ` David Kastrup
2007-07-22  6:38                                             ` david [this message]
2007-07-22  9:08                                               ` David Kastrup
2007-07-22 17:30                                                 ` Linus Torvalds
2007-07-22 17:59                                                   ` David Kastrup
2007-07-22 17:28                                             ` Linus Torvalds
2007-07-22 17:33                                             ` Linus Torvalds
     [not found]                                             ` <alpine.L FD.0.999.0707221031050.3607@woody.linux-foundation.org>
2007-07-22 18:58                                               ` David Kastrup
2007-07-22  1:16                                 ` Jakub Narebski
2007-07-22  1:39                                   ` David Kastrup
2007-07-22 12:06                                     ` Jakub Narebski
2007-07-22 13:53                                       ` David Kastrup
2007-07-22 20:26                                         ` Jakub Narebski
2007-07-22 22:57                                           ` David Kastrup
2007-07-23  6:05                                             ` David Kastrup
2007-07-23  7:45                                               ` David Kastrup
2007-07-22  0:34                               ` David Kastrup
2007-07-22  4:00                             ` Brian Gernhardt
2007-07-28  8:44                       ` David Kastrup
     [not found]                   ` <?= =?ISO-8859-1?Q?alpine.LFD.0.999?= =?ISO-8859-1?Q?.07072=0402135450.?= =?ISO-8859-1?Q?27249@woody.linu?= =?ISO-8859-1?Q?x-foundation.org?= =?ISO-8859-1?Q?>
2007-07-21  5:15                     ` David Kastrup
2007-07-18 17:34       ` David Kastrup
2007-07-18  0:39 ` Matthieu Moy
2007-07-18  6:16   ` David Kastrup
2007-07-18  6:30     ` Shawn O. Pearce
2007-07-18  2:23 ` Junio C Hamano
2007-07-18  5:56   ` David Kastrup
2007-07-18  6:34     ` Wincent Colaiuta
2007-07-18  6:53     ` Junio C Hamano
     [not found]       ` <867ioyqhgc.fsf@lola.quinscape.zz>
2007-07-18 23:34         ` Junio C Hamano
2007-07-20  8:29       ` Johan Herland
2007-07-20  8:41         ` David Kastrup
2007-07-20 10:20           ` Johan Herland
2007-07-20 10:54             ` David Kastrup
2007-07-20 12:18               ` Johan Herland
     [not found]                 ` <86odi7utdj.fsf@lola.quinscape.zz>
2007-07-20 13:20                   ` Johan Herland
2007-07-20 13:33                     ` David Kastrup
2007-07-22 21:35       ` David Kastrup
2007-07-26 23:33 ` Robin Rosenberg
2007-07-27  5:22   ` David Kastrup

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.64.0707212332530.6350@asgard.lang.hm \
    --to=david@lang.hm \
    --cc=dak@gnu.org \
    --cc=git@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).