0

我工作的公司给了我将他们的 java 项目从 CVS 转移到 Git 的项目。出于几个原因,他们不想使用 Eclipse 以外的其他工具。所以我们被EGit困住了。

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

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

谢谢

4

3 回答 3

2

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

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

这种方法的优势在于,您可以做的不仅仅是每次提交的样式检查,尤其是运行单元测试、静态代码分析和代码覆盖。主要缺点是您必须设置更多工具,而不仅仅是 git 挂钩。

于 2012-07-17T18:01:34.377 回答
2

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

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

我们已经在几个项目中做到了这一点,如果你从一开始就这样做,你将永远不会有任何格式错误的代码或关于它的讨论。

如果开发人员真的不情愿,甚至取消选中特定于项目的格式化程序并使用另一个格式化程序,也许你应该谈谈。

(顺便说一句,格式化程序中推荐的选项是Never join already Wrapping lines,因为有时格式化程序会进行奇怪的包装。这个选项可以控制包装。)

于 2012-07-17T18:47:29.373 回答
1

如果您知道确定代码格式是否正确的方法,您可以在钩子预提交中实现它

这个钩子应该放在 .git/hooks

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

于 2012-07-17T17:56:47.523 回答