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