hbons/SparkleShare — pull request #1121 by brandondahler (2012-12-24 10:01:47+00:00)
Title: Properly handle empty folders

TL;DR: Handle empty directories by storing them in a special directory in the root directory instead of creating .empty files.

This change remove the need for creating .empty files in every empty directory that is being tracked. The .empty files were originally needed in order to have git synchronize the folders.

In the .empty files place, a special file is used to keep track of empty folders. This special file is kept within the repository's LocalPath and therefore is versioned. Since the special file is versioned, empty directories and filling such directories will trigger the adding or removing of empty folders as needed.

Talk about handling this mentioned in issue #335, which references #326.

____

This change also introduce a maintainability class which has been named SparkleGitConfig.cs. This class maintains and handles the versioning of the folder which the special file referenced above lives in. As more problems are solved by storing data that git normally doesn't capture into special files, this class will become a larger part of the maintainability of the SparkleLib.Git.

The SparkleGitConfig class offers the following functions:

* Versioning of the .sparkleshare-git folder itself.
* Ensures format of files get converted and updated regardless of SparkleShare and repository version.
* Hidden, structured place for repository metadata files to be stored.
* No littering of the root directory of the repository with random files.
* Single place to manage these metadata files.
* Other metadata files should probably be moved to this, can be done after acceptance of the class and committal to this maintainability structure.