我需要有关如何成功创建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 请求似乎不是从性能方面来说是个好主意。
我应该遵循什么路径或我该怎么做?