2

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

有没有办法告诉它对每种类型的文件使用单行(即*.java text,或者*.java text eol=lf因为我们有一个风格指南规则要求这样做)?

我试图info/attributes在导入之前将 . 添加到存储库,但生成的.gitattributes.

有没有办法做到这一点?

4

1 回答 1

3

目前没有办法像*.java test eol=lf初始翻译那样定义默认规则,但是如果你稍后在 Git 分支中更改.gitattributes为用一个规则替换所有每个文件的行*.java test eol=lf,那么所有后续 Java 文件都不会使用 svn:eol-style=LF结果进入新行,但具有其他 svn:eol 样式值的 Java 文件将导致作为*.java test eol=lf规则例外的附加行。

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

SubGit 根本不考虑info/attributes文件,因为它没有版本控制并且仅存在于本地计算机上,而 SubGit 在服务器端级别上工作。但是,如果您只需要在一台机器上使用,您可以info/attributes在本地机器上使用来覆盖。.gitattributes

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

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

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

最后,在未来的版本中,我们(SubGit 团队)计划添加一种可能性,*.java test eol=lf为初始翻译指定默认规则或根据每个扩展的统计信息推断它,但现在您应该手动将此行添加到您工作的每个 Git 分支和。

于 2015-10-08T11:17:30.113 回答