Subversion 用户眼中的 Git (12): Git 有属性么?
除了在前面比较过的部分检出,路径授权等,还有一些 Subversion 的特性,在 Git 中的实现存在差异。用户最关心的可能就是:属性。
是的,Git 也有属性的概念,但是和 SVN 的属性并非一一对应的。
SVN 的属性在 Git 有类似物么?
SVN 的属性,的确是SVN的独创,在其它版本控制系统中很难看到。但是 Git 也有属性。 相比 Git 的属性,Subversion 的属性实在是太灵活了,在 SVNBOOK 中有一个例子:为每个图形文件建立一个缩略图属性,该缩略图属性保存的是该图形文件的缩略图。SVN 用户可以利用属性,做很多有“创意”的应用,但是小心,这样的“创意”会将你的系统牢牢的套牢在 Subversion 的解决方案之内,非明智之举。 因为 SVN 的属性太灵活,因此只拿 SVN 本身用到的属性举例,看看 Git 对应的解决方案。属性 svn:ignore
SVN 的 svn:ignore 属性必须设置在目录上,用于设置此目录下的文件忽略。即某些文件(临时文件或生成文件),不应该纳入版本控制中,为了防止被意外的错误的添加到版本控制系统中,而设置该目录下的文件忽略列表。 Git 使用 .gitignore 文件来定义文件忽略列表。这也是大多数版本控制系统通用的方案。如:CVS, Hg, Bazaar, Git。 两种方案的优缺点:- SVN 的解决方案不会在文件系统中引入不相关的文件 但是 SVN 在每个目录下有一个 .svn 控制目录呀,岂不更是可恨?
- SVN 的解决方案无法设置全局忽略,即每一个 svn:ignore 属性只影响目录本身,不会影响子目录 SVN 的全局忽略只能在个人机器上设置,无法自动传递给团队其它成员
- Git 的 .gitignore 文件可以设置在任意目录下,并且是向下继承的 因为 Git 的忽略列表可以向下继承,所以一般只在根目录创建一个 .gitignore 文件