如何从 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);
我正在尝试编写一个存储插件,它将迭代推送到存储在预接收存储库挂钩中的更改集中的提交。
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);