如何以某种格式显示代码但以另一种格式提交?

How to display code in certain format but commit in another?

我和我的一个朋友正在开发一个代码库,但出现了一个问题。因此,我很乐意遵守任何具有自动格式工具支持的通用样式标准。我朋友的代码比较难读,强烈喜欢下面格式的函数之类的东西

function foo()
{
    console.log('bar');
}

这有助于他区分块的开始和结束。

与左括号与函数关键字在同一行的这种格式比较。

function foo() {
    console.log('bar');
}

是否有任何流畅的方法可以在项目中强制执行代码风格,同时允许开发人员以他们喜欢的格式查看和看似添加代码?我读过 git 钩子,我认为它们可能是提交前格式化代码的一部分。但是,我找不到针对所描述场景的完整解决方案。

是的,这个叫content filter driver, using .gitattributes declaration



(图片来自“Customizing Git - Git Attributes", from "Pro Git book”)

我们的想法是在结账时自动应用一种代码格式,并在签入时自动应用另一种。

因此,对于任何 *.java 文件,您将调用一个格式化程序,该格式化程序能够在结帐时使用正确的大括号策略或在提交时使用原始策略来显示功能块。