SubGit和.gitattributes

时间:2015-10-08 10:53:52

标签: gitattributes subgit

我正在将一个SVN存储库导入Git,并且我有很多设置了svn:eol-style的文件。 SubGit 会读取这些属性,并为每个文件生成.gitattributes行。

有没有办法告诉它为每种类型的文件使用单行代码(例如*.java text*.java text eol=lf,因为我们有一个强制要求的样式指南规则??

我尝试在导入之前将info/attributes添加到存储库,但生成的.gitattributes没有变化。

有办法吗?

1 个答案:

答案 0 :(得分:3)

目前无法为初始翻译定义*.java test eol=lf等默认规则,但如果您稍后在Git分支中更改.gitattributes以使用{{1}替换所有每个文件行使用svn:eol-style = LF的所有后续Java文件都不会产生新行,但具有其他svn:eol样式值的Java文件将导致其他行作为*.java test eol=lf规则的例外。

此外,甚至建议使用*.java test eol=lf规则,因为当您在Git中创建Java文件时,会隐式应用*.java test eol=lf规则,因此您新创建的Java文件将具有“eol = lf“自动将你推送到Git时,SubGit会将其转换为svn:eol-style = LF。因此,此规则的行为方式与SVN自动属性相同。

SubGit根本不考虑.gitattributes文件,因为它不是版本化的,只有当SubGit在服务器端工作时才存在于本地机器上。但是,如果您只在一台计算机上需要info/attributes,则可以在本地计算机上使用info/attributes

我还要注意,更改.gitattributes文件时应该小心。当您将此类更改推送到SVN时,它将为更改了有效“eol”属性值的所有文件更新svn:eol-style。

还有一点需要注意:为具有混合EOL的文件设置“eol”属性时要小心:首先在Git blob级别将其EOL更改为LF,或者(更容易)设置.gitattributes相反,在SVN端的属性,因为当您设置此属性时,Subversion会自动修复文件内容,但Git不会这样做。

您提到了两种模式,svn:eol-style*.java text,但它们实际上是不同的。第一个是默认*.java text eol=lf规则的特例,除非Java文件包含二进制字符(因为它不包含“eol”属性,main * -rule会将其设置为!eol,what对应svn:eol-style = native);所以添加时会被忽略。第二个将为添加到Git的每个Java文件设置svn:eol-style = LF。

最后,在未来的版本中,我们(SubGit团队)计划添加为初始翻译指定默认* text=auto !eol规则的可能性,或者根据每个扩展程序统计推断它,但是现在你应该添加这个手动连接到您使用的每个Git分支。