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.