From: David Kastrup <dak@gnu.org>
To: david@lang.hm
Cc: Linus Torvalds <torvalds@linux-foundation.org>, git@vger.kernel.org
Subject: Re: [RFC PATCH] Re: Empty directories...
Date: Sun, 22 Jul 2007 11:08:58 +0200 [thread overview]
Message-ID: <851wf0pzyt.fsf@lola.goethe.zz> (raw)
In-Reply-To: <Pine.LNX.4.64.0707212332530.6350@asgard.lang.hm> (david@lang.hm's message of "Sat\, 21 Jul 2007 23\:38\:41 -0700 \(PDT\)")
david@lang.hm writes:
> On Sun, 22 Jul 2007, David Kastrup wrote:
>
>> Linus Torvalds <torvalds@linux-foundation.org> writes:
>>
>>> 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.
Sigh. No, I don't want to track every directory. I want to have
every directory _trackable_. Whether it is _tracked_ depends on
whether you _add_ it to the index. And that depends, among other
things, on the gitignore patterns, and those can be specified on a
per-directory, per-project, per-user preference.
> 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.
And that is why one can use per-directory, per-project and per-user
settings to turn the tracking off, _and_ one can decide at what level
one adds information to the index. If you always make it a habit to
only ever use git-add -f and git-rm -f on _files_ and never on
directories, you won't _ever_ see a difference on whether directories
are tracked, and the contents of .gitignore won't make a difference,
either.
But if you use git-add and git-rm on directories, then for the
specified directory and its children, .gitignore gets consulted.
> 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.
Which is why one can control it per-directory using either the
.gitignore mechanism _or_ by including the directory level in question
in the git-add and git-rm commands or not.
> 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.
Like with any other file, git _has_ a way to tell. If I don't git-add
or git-rm the directory or one of its parents to the index, I don't
want to have it tracked. And if I add the directory or one of its
parents to the index recursively, but it is covered by .gitignore, I
don't want to have it tracked.
It is a pity that you have seemingly not read on, because there
follows a simple example:
>> 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.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
next prev parent reply other threads:[~2007-07-22 9:09 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
2007-07-22 9:08 ` David Kastrup [this message]
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=851wf0pzyt.fsf@lola.goethe.zz \
--to=dak@gnu.org \
--cc=david@lang.hm \
--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).