我有一个.strings文件,默认情况下git将其解释为二进制文件,但我希望团队中的每个人在我创建pull请求时都能在GitLab上看到差异。
根据文档,当我将*.strings diff=Localizable
添加到.gitattributes并将此textconv驱动程序添加到.git/config:时,我能够在本地看到差异
[diff "Localizable"]
textconv = "iconv -f utf-16 -t utf-8"
binary = false
问题是,我们没有提交.git/config文件,所以每个人都必须将其添加到他们的配置文件中,而我们在GitLab上查看代码时仍然无法看到差异。有没有一种方法可以在一个可以安全提交的文件中定义textconv?我试着将它添加到.gitattributes中,但它什么也没做。
如果重要的话,这是一个Xcode项目。
否。
这很不幸,但对于安全性来说也是必要的,因为如果你能在提交的文件中定义一个textconv
过滤器,那么一个糟糕的参与者就可以定义一个假过滤器,例如,它(可能在进行一些文本转换时)充当特洛伊木马。
可以做的是为用户提供一个设置脚本,并告诉他们如果你喜欢,请检查脚本,然后如果你信任它,请运行它来设置。(让脚本尽可能简单,这样人们就可以先检查它,尽管你可能想让它看看它是否已经运行过,在这种情况下什么都不做。)
正如torek所提到的,出于安全原因,指定textconv是不可行的。您可以做的最好的事情是在存储库的根目录中添加一个.gitattributes
文件,该文件将其声明为文本(如*.strings text=true
),而不是二进制文件。这至少可以帮助您在GitLab中查看差异。
您需要将.gitattributes
文件提交到项目的默认分支(例如master
或main
),然后它才会生效。对任何其他分支中.gitattributes
文件的更改都不会影响在GitLab UI中查看差异的方式。
根据gitlab文档,您还必须使用UTF-8编码提交.gitattributes
文件才能工作