1

我需要有关如何成功创建RepositoryMergeRequestCheck

作为我们合并工作流程的一部分,我们需要确保一些关于某些文件的策略。政策包括:

  • 单个文件的文件命名约定
  • 多个文件之间的文件命名约定(例如,相关命名的文件)
  • 检查文件以强制或禁止使用语句或函数

我希望能够在存储库合并请求检查中检查此策略,因此我正在为 Astlassian Stash 构建插件

我尝试了以下方法:

  • 使用的RepositoryMergeRequestCheckContext参数RepositoryMergeRequestCheck.check() 由于方法签名是:

    @Override public void check(RepositoryMergeRequestCheckContext context)

我尝试使用的第一件事是上下文参数。我可以说context.getMergeRequest().getPullRequest().getFromRef().getRepository() 现在我得到了一个 Repository 实例,但我不确定如何从中提取提交信息。

  • 直接调用 Git:由于这个检查最初是作为 git hook 脚本开发的,所以从 SDK 调用 git 对我来说是有意义的。它导致我出现这种情况:

    String result = gitScm.getCommandBuilderFactory().builder().lsTree().build(…).call();

gitScm 在插件的构造函数中注入依赖项。注意构建参数?在这种情况下,它需要一个CommandOutputHandler<T>T 是字符串,但那是一个接口,我不确定如何获取实现该接口的实例或如何创建一个实例。

  • REST API REST API 看起来是其中最简单的,但它仍然无助于检查文件源代码的第三个要求,此外,从合并请求检查中生成 Web 请求,这本身就是来自 stash 的 Web 请求似乎不是从性能方面来说是个好主意。

我应该遵循什么路径或我该怎么做?

4

1 回答 1

2

我开始给你写回复,然后意识到我已经在 Answers 上回答了这个问题(这也是我要建议的)。

https://answers.atlassian.com/questions/182943/enforcing-policies-from-repository-merge-request-check-plugin

干杯,查尔斯

于 2013-09-12T22:14:18.083 回答