2.4 避免引入辅助目录
很多版本控制系统都要在工作区中引入辅助目录或文件,如SVN要在工作区的每一个子目录下都创建.svn目录,CVS要在工作区的每一个子目录下都创建CVS目录。
这些辅助目录如果出现在服务器上,尤其是Web服务器上是非常危险的,因为这些辅助目录下的Entries文件会暴露出目录下的文件列表,让管理员精心配置的禁止目录浏览的努力全部白费。
还有,SVN的.svn辅助目录下还存在文件的原始拷贝,在文件搜索时结果会加倍。如果你曾经在SVN的工作区用过grep命令进行内容查找,就会明白我指的是什么。
Git没有这个问题,不会在子目录下引入讨厌的辅助目录或文件(.gitignore和.gitattributes文件不算)。当然,Git还是要在工作区的顶级目录下创建名为.git的目录(版本库目录),不过,如果你认为唯一的一个.git目录也过于碍眼,可以将其放到工作区之外的任意目录。一旦这么做了,在执行Git命令时,就要通过命令行(—git-dir)或环境变量GIT_DIR为工作区指定版本库目录,甚至还要指定工作区目录。
Git还专门提供了一个git grep命令,这样在工作区根目录下执行查找时,目录.git也不会对搜索造成影响。
关于辅助目录的详细讨论请参见本书第2篇第4.2节中的内容。