¿Qué software de control de versiones permite include en la list blanca los directorys?

Quiero include en la list blanca un par de directorys y un file:

/app /config /db Gemfile 

Un control de versión go-to, git , no permite rastrear un directory:

 # .gitignore: * # ignore all: suppose I prefer whitelisting # but not the following things: !/app/* !/config/* !/db/* !Gemfile 

No funciona: git solo ve Gemfile .

¿Sabe por casualidad si algún software de control de versiones permite include directorys y directorys en una list blanca?

Editar 1

Intentando aplicar http://sofes.miximages.com/a/8025106/788700 :

 # Ignore everything: * # Don't ignore directories, so we can recurse into them: !*/ # Don't ignore these dirs: !app/* !config/* !db/* # Don't ignore .gitignore and Gemfile: !.gitignore !Gemfile 

– no rastrea los directorys en la app/ , config/ y db/ .

Editar 2: resuelto

Usando un comentario de la respuesta anterior:

 # Ignore everything: * # Don't ignore directories, so we can recurse into them: !*/ # Don't ignore these dirs: !app/* !app/**/* !config/* !config/**/* !db/* !db/**/* # Don't ignore .gitignore and Gemfile: !.gitignore !Gemfile 

Parece estar funcionando.

  1. Git | Mercurial no rastrea directorys vacíos, pero si agrega files ficticios en directorys, se rastrearán (y no se ignorarán)
  2. Git | Mercurial aplicará patrones de ignorar solo para files nuevos (no rastreados), por lo tanto, si va a ignorar todos, pero agrega algunos objects a mano, se rastrearán independientemente de la configuration del file * ignorar (pero vea arriba)
  3. Subversion puede rastrear directorys vacíos, pero los patrones svn: ignore son en común más débiles, que los mecanismos equivalentes en Git | Mercurial