从Atlassian Stash Repository合并请求检查插件执行策略

时间:2013-06-21 17:52:42

标签: plugins pull-request bitbucket-server

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

的帮助

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

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

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

我尝试了以下方法:

  • 使用RepositoryMergeRequestCheckContext的{​​{1}}参数 由于方法签名是:

    RepositoryMergeRequestCheck.check()

我尝试使用的第一件事是context参数。我可以说@Override public void check(RepositoryMergeRequestCheckContext context) 现在我得到了一个Repository实例,我不知道如何从中提取提交信息。

  • 直接调用Git:由于此检查最初是作为git hook脚本开发的,因此从SDK调用git对我来说很有意义。这让我想到了这种情况:

    context.getMergeRequest().getPullRequest().getFromRef().getRepository()

gitScm在插件的构造函数中注入依赖项。 注意构建参数?它期望在这种情况下String result = gitScm.getCommandBuilderFactory().builder().lsTree().build(…).call(); T是字符串,但这是一个接口,我不知道如何获得实现该接口的实例或如何创建一个接口。

  • REST API REST API看起来最简单但它仍然没有帮助检查文件的源代码的第三个要求,并且从合并请求检查产生Web请求本身是一个来自存储的Web请求似乎不是一个好的表现方面的想法。

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

1 个答案:

答案 0 :(得分:2)

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

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

干杯, 查尔斯