我正在掌握一个开发团队,每个人都使用Eclipse和相同的格式设置。
现在,一些开发人员有理由切换到其他IDE,这会以不同的方式格式化源代码。因此,当他们现在推送到git origin repo时,git会注意到很多外观差异。不幸的是,对于一些开发人员而言,这是一个很大的问题。
有没有办法获取git - 可能通过使用钩子 - 在push或者最好提交时重新格式化所有内容,所以repo中的代码总是独立地格式化IDE?
我假设我们不是git-history中第一个遇到这个问题的团队,所以我希望有一个预制解决方案或至少一些最佳实践。
答案 0 :(得分:5)
可靠地执行此操作的唯一方法是在服务器端(出于安全原因,在克隆期间不会自动设置客户端挂钩,因此如果您在客户端执行此操作,请参阅其中一个注释中的每个开发人员必须手动设置一次钩子。
在那里,你可以理论上操纵收到的更新......但这是一件相当复杂的事情。但是,实际的问题是,一旦完成,你就会在本地拥有自己的,未经修改的提交,并且服务器上有修改后的提交 - 这就是要求麻烦。如果你现在要进行拉/合并,git会将未触及的历史记录与修改后的历史记录结合起来,然后突然你完成所有提交两次。
如果您想确保只有格式正确的代码最终存储在存储库中,那么如果拒绝格式错误的代码,则会更容易并且会导致更少的问题。当然,这在实践中可能相当烦人,但这是你必须做出的权衡取舍。
假设您可以让开发人员执行本地钩子设置操作,那么本地预提交钩子几乎肯定会更容易编写并且在实践中减少麻烦 - 但它可以通过各种方式绕过,所以有没有铁定的保证。