git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Brian Gernhardt <benji@silverinsanity.com>,
	David Kastrup <dak@gnu.org>,
	"Shawn O.Pearce" <spearce@spearce.org>,
	Matthieu Moy <Matthieu.Moy@imag.fr>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [RFC PATCH] Re: Empty directories...
Date: Thu, 19 Jul 2007 19:24:29 -0700	[thread overview]
Message-ID: <7vir8f24o2.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <alpine.LFD.0.999.0707191726510.27249@woody.linux-foundation.org> (Linus Torvalds's message of "Thu, 19 Jul 2007 17:33:29 -0700 (PDT)")

Linus Torvalds <torvalds@linux-foundation.org> writes:

> So the whole notion of "remembering" whether a directory was added 
> explicitly as an empty directory or not is just not a sensible concept in 
> git. 

That is true if it is implemented as David suggested, to have a
phony "." entry in the tree object itself.  The object name of
such a tree (when it contains blobs and trees underneath) will
be different from a tree that contains the same set of blobs and
trees.  It would destroy the fundamental concepts of git.

But you _could_ treat that "should-be-kept-even-when-empty"-ness
just like we treat executable bit on blobs, I think.

When blobs with the same contents but of different type (REG vs
LNK) and regular file with or without executable bit are entered
in git, they all get the same SHA-1 but we can still tell them
apart because the index and the tree entry have mode bits.  So
hypothetically, you could introduce "sticky" directory in tree
entries to mark "this will not go away when emptied".

In a 'tree' object, they might appear as:

        40000 ordinary-directory '\0' 20-byte SHA-1
        41000 directory-dontremove-even-if-empty '\0' 20-byte SHA-1

In 'index', as your "I'm soft" patch, we do not have to add
nonsticky kind of tree nodes, but for "empty" ones, we can add:

	041000 directory-dontremove-even-if-empty '\0' 20-byte SHA-1

in the index and (unlike your patch) keep it there even after a
blob or a tree is added underneath it.

The "sticky" bit on such a directory would have to obey the
usual rule of 3-way merge, which would be a huge change to do
so, but I do no see there is anything fundamental that prevents
you from doing this.  Other than the fact that probably no git
long timer is interested in spending time on such a feature,
that is.

Obviously, this "sticky" bit will cascade up and make your
otherwise equivalent parent tree's different, but I think that
is just as a sane behaviour as two trees that contain the same
blob with only executable-bit differences have different names.

This will involve a lot of changes, so I would not recommend
anybody doing so, though.

  reply	other threads:[~2007-07-20  2:24 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 [this message]
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
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=7vir8f24o2.fsf@assigned-by-dhcp.cox.net \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=Matthieu.Moy@imag.fr \
    --cc=benji@silverinsanity.com \
    --cc=dak@gnu.org \
    --cc=git@vger.kernel.org \
    --cc=spearce@spearce.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).