Projects / MarkEmptyDirs


CVS, GIT, and Mercurial as well as other well-known version control systems cannot version directories. In other words, you cannot add empty directories. A "workaround" for this issue is to use placeholder files that are placed into empty directories. These placeholder files can then be committed into the repository and will make sure that, upon checkout, the directory tree is entirely reconstructed. The problem with using placeholder files is that you need to create them, and need to delete them if they are not necessary anymore (because sub-directories or real files were added). With big source trees, managing these placeholder files can be cumbersome and error prone. MarkEmptyDirs can manage the creation/deletion of such placeholder files automatically. It creates placeholder files in all empty "leaf" directories. If later on new files or directories are put into such directories, the placeholder files are not necessary anymore, and are removed automatically.

Operating Systems

Recent releases

  •  08 Oct 2010 19:38

    Release Notes: This version has a new '--purge' command line option that deletes everything within directories containing placeholders, except the placeholder files themselves. Additionally, the help text now is formatted dynamically according to the console's windows size.

    •  16 Feb 2010 08:44

      Release Notes: This version fixes an issue with symbolic links that point to directories, which are also reachable by not following symbolic links. A minor performance optimization was made.

      •  05 Feb 2010 14:36

        Release Notes: This release adds a new commandline option "--follow-symlinks", which decides whether MarkEmptyDirs follows symbolic links to directories (currently, symbolic links are only supported on Unix filesystems). It fixes directory trees with symlinks not being processed properly and an issue with case-insensitive filesystems and placeholder filenames.

        •  18 Aug 2009 18:29

          Release Notes: This version adds three new template variables: a 'placeholder' variable, a 'dir' variable, and a 'separator' variable. It adds two new '--create-hook' and '--delete-hook' options, allowing you to hook in scripts to be executed on placeholder creation/deletion. Directory scanning performance, error handling, and help message output are also improved. For simplicity, the '--dry' alias for the '--dry-run' option has been abandoned. A bug is also fixed: the set of default excluded directories now contains 'CVS' instead of '.cvs'.

          •  07 Aug 2009 08:48

            Release Notes: A new command line option was added that allows you to switch variable substitution within placeholder files on or off. Placeholder files now are created with the system's default encoding (instead of ASCII encoding). Several unit tests were added for quality assurance. Some minor improvements regarding error handling were added.


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.