首页 > 解决方案 > Eclipse 设置中的行尾字符触发器

问题描述

Eclipse 将一些项目设置存储在.settings/org.eclipse.wst.common.project.facet.core.xml更改行尾字符的文件中,这会创建不必要的提交并污染存储库。这是文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>                                 (this EOL flip-flops)
  <installed facet="jst.utility" version="1.0"/>  (this EOL flip-flops)
  <installed facet="java" version="11"/>
</faceted-project>

重现步骤:

  1. 开发人员 #1 在Windows中打开项目,Eclipse 将行尾字符更改为\r\n; 然后这个开发人员提交到存储库。
  2. 然后,开发人员 #2 在Linux中打开项目,Eclipse 将行尾字符更改为\n; 然后这个开发人员提交到存储库。
  3. 开发人员 #1 拉取了Windows中的更改,并且 EOL 触发器再次触发。冲洗并重复。

这发生在四个设置文件中(到目前为止),因此它们几乎在每次提交时都会提交到 git 存储库;这正在污染存储库。

有没有办法告诉 Eclipse 要么使用要么永久\r\n使用\n?工作区和项目设置似乎不会影响“设置文件”,而只会影响“源代码”文件。

标签: eclipsegitsettingseol

解决方案


这里有两种可能的方法。一种是不将编辑器配置存储在存储库中,这通常是推荐的方法。不同的人在不同的系统上使用不同的编辑器,除通用编辑器配置之外的任何内容都可能包含不适用于所有系统的设置。

另一种方法,如果你想存储它们,是.gitattributes在你的存储库中使用一个文件,然后添加如下一行:

.settings/*.xml text

然后运行git add --renormalize .。这将强制存储库中的行尾为 LF,并默认情况下告诉 Git 检查本机行尾。当然,如果 Git 适合他们的系统,用户可以配置 Git 来做一些不同的事情。

然后当用户修改文件时,结尾将适合他们的平台,并且不会导致 Git 显示已修改的内容。如果用户确实尝试提交它,该文件将被规范化,并且不会发生任何更改。

您还可以添加* text=auto.gitattributes文件中,这将让 Git 根据检测为二进制文件还是文本文件来确定哪些文件的行尾应该规范化。gitattributes(5)您可以在手册页中查看有关如何调整这些设置的更多信息。


推荐阅读