I am trying to create a pre-receive hook to retrieve the contents of the files that are being added or updated to the stash server so that I can analyze their content and based on that analysis allow or deny the push.
To start with, am trying to retrieve the commit that is being pushed so that I can get the associated changes. So far I was only able to retrieve old commits and not he ones currently being pushed.
My code:
public boolean onReceive(RepositoryHookContext context, Collection<RefChange> refChanges, HookResponse hr) {
Repository repository = context.getRepository();
for (RefChange refChange : refChanges) {
final CommitsBetweenRequest request = new CommitsBetweenRequest.Builder(repository)
.exclude(refChange.getFromHash()) //this is all 0's for RefChangeType.ADD
.include(refChange.getToHash())
.build();
Page<Commit> cs = commitService.getCommitsBetween(request, PageUtils.newRequest(0, 9999));
for (Commit commit : cs.getValues()) {
//false for new commits, true for old ones
if (!commitIndex.isMemberOf(commit.getId(), repository)) {
//do stuff;
}
}
}
return false;
}Any help would be apreciated.
Regards,
Pedro chaves