如何从 Atlassian Stash Pre Receive Repository Hook 中的 refChanges 获取提交列表

how to get a list of commits from refChanges in Atlassian Stash Pre Receive Repository Hook

我正在尝试编写一个存储插件,它将迭代推送到存储在预接收存储库挂钩中的更改集中的提交。

API在onReceive方法中传递了一个refChange的Collection。

public boolean onReceive(RepositoryHookContext context, Collection<RefChange> refChanges, HookResponse hookResponse)

如果我进行 3 次提交然后推送我得到一个 RefChange 看起来像这样

refId = refs/heads/master
fromHash = ded3e4583653f14892cc3e8a898ba74ee75e1a58 // First Commit in change set
toHash = ae017dcdadf7ca69617fb05f6905cccfe2aa4229 // Most recent commit
type = "UPDATE"

我想获取所有提交的集合,以便我可以获得所有提交消息。

我正在查看 com.atlassian.stash.commit.CommitService getCommit 和 getCommits。我想我需要 getCommitsBetween 但不太清楚如何从我拥有的 RefChange 中创建所需的 GetCommitsBetween 参数。

我走的路是否正确?

尽管 Atlassian Stash API 文档中的 CommitsBetweenRequest 页面是为数不多的带有解释的页面之一,但还是经过反复试验才弄明白这一点。 GetCommitsBetween 有效,但这是诀窍...

commitsBetweenBuilder.exclude 设置为更改集中的开始提交,将 commitsBetweenBuilder.include 设置为结束提交哈希。

CommitsBetweenRequest.Builder commitsBetweenBuilder = new CommitsBetweenRequest.Builder(context.getRepository() );
commitsBetweenBuilder.exclude(refChange.getFromHash()); //Starting with
commitsBetweenBuilder.include(refChange.getToHash()); // ending with

PageRequest pageRequest = new PageRequestImpl(0,6);

Page<Commit> commits = commitService.getCommitsBetween(commitsBetweenBuilder.build(), pageRequest);

//TODO: handle Pages
for (Commit commit : commits.getValues()) {
   hookResponse.out().println("Message = " + commit.getMessage() + "\n");
}

我无法让依赖注入为 CommitService 工作。 Spring 由于某种原因无法在本地尝试 运行 时找到它 ???

我确实使用组件定位器让它工作了。

CommitService commitService = ComponentLocator.getComponent(CommitService.class);