合并时规范Git大括号格式(同行vs下一行)约定

6za6bjd0  于 2023-05-15  发布在  Git
关注(0)|答案(2)|浏览(162)

我对Git非常陌生(我已经使用TFS大约十年了,并且已经研究了几天Git),并且正在进行原型设计,将我们的开发团队切换到使用Azure Repos而不是TFS。

**问题:**我遇到的一个常见问题(也是我最不喜欢的问题之一)是,当一个程序员重新格式化代码文件以使用不同的花括号格式规则(即:同一行与下一行)比以前的文件,合并逻辑显示了数百个变化(每个花括号变化一个),当我去diff或签入文件时,我不能很容易地告诉实际的逻辑变化在代码文件中的位置。我知道这不应该发生,但有些程序员还是会这样做。
**问:**我最近了解到,Git可以通过使用crlf设置来规范化windows和mac/linux开发人员系统之间的行结束(\r\n vs \n问题),我想知道Git中是否有一些功能来规范化代码格式约定,例如大括号新行vs相同行样式?
**理想的解决方案:**我希望Git仓库总是使用一个花括号样式(我们将作为一个团队决定),然后当开发人员合并代码时,它会自动格式化为仓库商定的格式,然后当开发人员从仓库中提取代码时,它会被格式化为他们偏好的样式,因此相同的行程序和下一行程序可以和平共处,并且将代码文件从一种格式转换为另一种格式的丑陋合并问题将永远解决。有办法做到这一点吗?

fzsnzjdm

fzsnzjdm1#

解决方案是使用不同的工具,而不是git。我知道有一个版本控制的研究项目来存储语法树而不是文本行,并根据用户的偏好在结帐时格式化代码,就像你问的那样,但它在15年前被放弃了。
你的团队可以在提交前调用一个脚本(或者一个git预提交钩子?),它运行代码格式化程序以使用团队的首选格式。然后在拉取后,任何开发人员都可以使用自己的首选设置运行代码格式化程序。但我不认为他们可以修复git差异显示团队标准。

jjjwad0x

jjjwad0x2#

你可以使用一个git-hook shell脚本来检查所有被修改过的文件,并对它应用mvn prettier:https://github.com/HubSpot/prettier-maven-plugin

相关问题