SVN是否具有.gitattributes的等价物?

时间:2012-10-11 18:22:48

标签: svn unity3d automatic-properties gitattributes

背景

我有两个Unity3d项目:

  • Unity首选项设置为“混合资源”模式的第一个(某些文件是文本,某些文件是二进制)和
  • 第二个的首选项设置为“强制文本”(大多数二进制文件被翻译为YAML文本,因此几乎所有文件都可以diff编辑。

为了将第一个项目的文件设置为文本/二进制文件,我们的~/.subversion/config文件启用了svn auto-props以及文件列表及其svn属性( *。cs 文件设置为svn:eol-style=native * .unity 文件设置为svn:mime-type=application/octet-stream,依此类推。)

问题:

由于我们的第二个项目现在支持所有文件的文本模式,因此我们需要使用一组不同的auto-props规则,以便 * .unity 文件现在作为{处理{1}}。

我看到svn:eol-style=native可以使用基于每个项目(或每个目录)的git,因此我们可以拥有此功能。 SVN可以使用我们可以在我们的仓库中共享的某种文件来执行此操作,因此每个提交的人都将使用相同的默认设置吗?

1 个答案:

答案 0 :(得分:2)

你必须明白的一点是,在git中,存储库和工作目录之间没有真正的区别。从父存储库中提取时,可以创建自己的存储库。

.Gitattributes影响您的本地存储库,只影响您的本地副本。其他人可以为其存储库更改其.gitattributes。毕竟,这是他们的存储库。如果父存储库正在接收更改,它可以使用预接收挂钩来验证检索到的数据包,以确保它遵循父存储库的策略。您不应该使用.gitattributes来强制执行策略,只是为了帮助您遵循策略。

Subversion的自动属性配置类似。它会影响该用户的所有工作副本。每个工作副本都没有单独的配置。您可以在许多Subversion命令上使用--config-dir参数为该操作指定不同的Subversion配置文件,因此您可以拥有多个配置文件并使用--config-dir指定该文件。这不方便,但它是可能的。

如果要确保正确设置属性,则需要预提交挂钩来检查提交中的属性,并拒绝对文件的无效属性或属性值进行提交。我有pre-commit hook可以做到这一点。