【问题标题】:Egit : Prevent a commit if not formatted correctlyEgit:如果格式不正确,则阻止提交
【发布时间】:2012-07-18 02:47:29
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 您是否有办法以编程方式确定代码是否格式正确?如果是这样,也许看看“钩子”或类似的东西(我不认识自己,但我一直听说它们)。如果您没有办法确定这一点,恐怕没有什么可做的。 Git 没有(也不会)有办法告诉你你的代码风格是否正确(因为没有正确的代码风格)。

标签: eclipse git format egit


【解决方案1】:

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

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

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

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

(顺便说一句,格式化程序中的一个推荐选项是从不加入已经换行的行,因为有时格式化程序会进行奇怪的换行。这个选项可以控制换行。)

【讨论】:

  • 我们决定选择此解决方案,因为它易于设置。如果有人决定使用另一种格式化方式,我们只会要求他们停止这样做。非常感谢。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 1970-01-01
      • 2023-02-08
      • 2020-09-19
      • 2019-01-25
      • 2017-11-18
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多