2012-07-17 23 views
0

我工作的公司给了我将他们的java项目从CVS移动到Git的项目。 由于多种原因,他们不想使用Eclipse之外的其他工具。所以我们坚持使用EGit。Egit:如果没有正确格式化,请阻止提交

我知道可以配置Eclipse来格式化代码。但似乎没有什么会阻止某人使用自己的格式化代码的方式。

所以我的问题是,如果代码格式不正确,是否可以拒绝提交EGit?这个问题背后的原因是我们希望避免由于代码格式造成的冲突,这在CVS中是一个非常大的问题。

谢谢

+0

你有一种编程方式来确定代码是否格式良好?如果是这样,也许看看“钩”或类似的东西(我不知道我自己,但我已经听说过他们)。如果你没有办法确定,恐怕没有什么可做的。 Git不会(也不会)告诉你代码风格是否正确(因为没有正确的代码风格)。 – Shahbaz 2012-07-17 17:39:07

回答

2

我建议设置格式化程序和保存操作来将代码格式化为项目特定的配置。然后在Git中跟踪.settings目录。

因为它是在项目和版本控制中配置的,所以开发人员不必自己配置Eclipse,它是自动的。

我们已经完成了几个项目,如果您从一开始就这样做,您将永远不会有任何格式不正确的代码或有关它的讨论。

如果开发人员真的很不情愿,甚至可能会取消选中特定于项目的格式化程序并使用另一个格式化程序,那么也许您应该进行谈话。

(顺便说一句,在格式化一个推荐的选项是永不相交已换行,因为有时格式化会做奇怪的包裹。这个选项能够有超过包装的控制。)

+0

我们决定选择这个解决方案,因为它很容易设置。如果有人决定使用另一种格式,我们只会让他们停止这样做。非常感谢你。 – Cyril 2012-07-23 08:10:41

1

如果你知道一种方法来确定代码是否正确的格式,你可以在钩子实现这种预先承诺

该钩子应该放在git的/钩

git附带了一个名为pre-commit.sample的示例,它已在hooks目录中,或者您可以在/ usr/share/git-core/templates/hooks /(在Ubuntu上)找到它。

2

在提交过程中检查代码的替代方法是使用gerrit作为审阅系统的情况。开发人员将他们的代码提交给gerrit,而不是直接将其提交给git存储库。 Gerrit然后可以在Jenkins/Hudson服务器上触发构建作业,并且该构建作业可以运行CheckStyle或任何其他您喜欢的格式检查工具。

成功检查Jenkins可以验证更改并将其合并到git存储库(大多数项目更喜欢Jenkins只验证代码的正确性,并且人类仍然需要在之后检查代码)。提交失败检查将保留在gerrit中(并且邮件将发送给开发人员)。

这种方法的优点是,您可以做的不仅仅是每次提交的样式检查,特别是运行单元测试,静态代码分析和代码覆盖率。主要缺点是你必须建立更多的工具而不仅仅是一个git钩子。