Subject: Re: [1.8.0] Tracking empty directories

From: "Wesley J. Landaker" <[email-masked]>
Date: Wed, 2 Feb 2011 19:21:53 -0700

On Wednesday, February 02, 2011 16:33:09 David Aguilar wrote:
> I don't like where this is going. Users are not always right.
> Touch .gitignore and be done with it.   This is a big change with
> negligible benefits.  I don't understand why this is needed.

I am not usually bothered too much that git doesn't story directories, and 
when I need to do it, I can do the .gitignore trick just like anyone else.

However here are a few reasons that I miss this feature sometimes:

  1) Why WOULDN'T you want to track empty directories? We track empty files: 
isn't that just as pointless? What if git couldn't track empty files and 
automatically removed files when they became empty? Well, I could live with 
that just as well, with some silly workarounds every once in a while (e.g. 
echo empty > some_file).

  2) One of git's best strengths is that it's so easy to interact with other 
SCM software, primarily because git's features are a SUPERSET of other SCMs. 
However, almost every other SCM can track empty directories, except git, 
which makes it much harder to use as universal tool, where I can trust that 
everything will round-trip as well as possible. Also, other SCMs don't want 
".gitignore" files cluttering their repository any more than we want their 
SCM tool's random control files in our repositories.

  3) Forget for a moment the cuddly git idosynchracies that through use we 
have come to know and "love". From a design perspective, does putting and 
tracking, a file called IGNORE in a directory you want to KEEP make sense? 
It's one thing to use "touch .gitignore" in an empty directory to keep it 
*as a workaround*, based on implementation details (i.e. any file in the 
directory will do, but we probably will have a .gitignore anyway eventually, 
so might as well as use that) but it's a strange *design*. =)

  4) On many projects I work on with a huge number of people, the workflow 
is to create a very, very intricate directory hierarchy skeleton, so that 
it's clear to everyone where everything goes and how it is organized, even 
before any work is started. In this case with git, it's annoying to do this 
because there are worthless .gitignore files cluttering up everything, which 
makes it harder to find where there are *actual* ignore rules being applied.

  5) Git not tracking empty directories and the (perceived?) arrogant 
reaction from git experts ("no big deal, just touch .gitignore" -- I've said 
this to people too, since it's the canonical answer, but I always feel a 
little chagrined after hyping up everything git can do) sometimes is just 
one more thing that makes git harder to sell to others, especially when they 
are already in love with Subversion or whatever.

Most of all, think of it this way: maybe git doesn't need to track empty 
directories in order to be awesome, but is there some reason that tracking 
empty directories would make it less awesome?

Anyway, just some thoughts.