Get commits being pushed to the stash server

Pedro Chaves May 24, 2017

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

 

 

 

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events